下面的代碼包含一個函式 ( logger),它設定一個超時,然后控制一個異步函式,然后控制一個元素 ('c')。
這里的輸出是'a', 'b', 'c'。
'c' 是如何等待其他兩個回傳的?該await呼叫位于console.log 中,因此我認為'c' 控制臺將繼續執行,因為await它不在控制臺呼叫'b' 的開頭。
換句話說,我認為輸出應該是'c','a','b'.
這里的任何啟示將不勝感激!
async function apiCall() {
return new Promise((resolve) => {
setTimeout(() => {
resolve('b');
}, 50);
});
}
async function logger() {
setTimeout(() => console.log('a'), 10);
console.log(await apiCall());
console.log('c');
}
logger();
uj5u.com熱心網友回復:
呼叫內部表示函式將回傳中間承諾的await點。請注意,代碼行等效于console.log()logger()
let p = await apiCall();
console.log(p);
函式呼叫中的運算式引數在呼叫函式之前進行評估。因此,整個函式 ( logger()) 必須等待 promise 解決,然后才能繼續呼叫console.log()。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/515393.html
