簡體   English   中英

在循環中使用 await 是好習慣嗎?

[英]Is it good practice to use await in a loop?

我們可以在 for 循環中使用 await; 但是,我想弄清楚這是否是一個好習慣。

我在 MDN 上讀到:“當在代碼中遇到等待時(在異步 function 中或在模塊中),等待的表達式將被執行,而所有依賴於表達式值的代碼將被暫停並推入微任務隊列。”

我會將其解釋為可能意味着 //2 及其下方依賴於 //1 結果的所有內容將在每次迭代中“推入微任務隊列”——如果我的解釋是正確的。

是否有關於該主題的權威機構(例如,MDN)寫明這是否以及何時是一種好的做法?

let zeros = new Array(10).fill(0);

(async () => {
    for (let zero of zeros) {
        var r = await new Promise((r)=>setTimeout(r.bind(null, 1), 10)); //1
        console.log(zero);
    }
    console.log(r); //2
})();

這取決於你想做什么。

例如,如果您必須發送 3 個 HTTP 請求,最好像這樣一起運行它們:

await Promise.all([http_get(url_1), http_get(url_2), http_get(url_3)])

這樣整個操作的持續時間就是最長的HTTP GET請求的長度,而不是每個請求持續時間的總和。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM