等候執行結果才回傳

當你需要回傳各func的執行結果

模組化後,執行的實作在提整的func中,不做額外處理(等候)會直接被當成異步,造成先傳出response沒有取得真正的執行結果。

azure的基本範例就是用asyns掛在func前,讓回傳自動成為異步!

與asyns搭配使用的是「await」,強迫等候處理取得結果。

module.exports = async function (context, req) {
    let responseMessage = "success";
    let status = 200;

    const action = context.bindingData.action;
    
    await (function() { 
        if(action == "action"){
            responseMessage = "處理了!";
        }
        else if(action == "ERR"){
            responseMessage = "錯誤訊息";
            status = 400;
        }
    })();

    context.res = {
        // status: 200, /* Defaults to 200 */
        status: status,
        body: responseMessage
    };
}

await後基本上是接著function,這裡用匿名函式方式處理。

var search = require(`./search`);

module.exports = async function (context, req) {
    let responseMessage = "success";
    let status = 200;

    const action = context.bindingData.action;
    
    if(action == "search"){
        responseMessage = await search.search(req); //等候目標function
    }
    else if(action == "ERR"){
        responseMessage = "錯誤訊息";
        status = 400;
    }

    context.res = {
        // status: 200, /* Defaults to 200 */
        status: status,
        body: responseMessage
    };
}

Last updated

Was this helpful?