在下面的偽代碼中,當for回圈執行每次迭代時,每次迭代的for回圈塊會等待異步的回應fetch(因為await在myasyncfn?或者我需要使用await關鍵字,如下面的評論所示?
async myasyncfn(url){
return await fetch(url..).response;
}
for each url in url_array:
myasyncfn(url); #await myasyncfn(url)
uj5u.com熱心網友回復:
在繼續回圈之前它不會等待async函式完成;從這個意義上說,它會阻塞。然而,這僅僅意味著它會快速連續地遍歷所有 URL,觸發許多fetch請求,然后這些請求將在后臺并行運行。一旦回圈完成觸發這些,您的執行緒就會被解除阻塞。
為了顯示:
async function foo(i) {
await new Promise(resolve => setTimeout(resolve, 5000));
console.log('Completed', i);
}
for (let i = 0; i < 10; i ) {
foo(i);
console.log('Fired', i);
}
console.log('Done firing all async functions, unblocking...');
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/430581.html
標籤:javascript 异步 异步等待
