等候執行結果才回傳
當你需要回傳各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中還有需要等待的function,外面的function也必須為async,且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?