簡體   English   中英

是 async/await 允許其他任務運行

[英]is async/await allow other tasks to run

大家好,我希望你們做得好,對於這個愚蠢的問題很抱歉,我只是想知道 async/await 是否允許其他任務運行?。

我剛剛在 MDN 上閱讀了async await缺點,其中有一部分說“它確實允許其他任務在此期間繼續運行,但您自己的代碼被阻止了。” 這是什么意思? 是只有 async/await 可以允許其他任務運行還是 promise 也可以這樣做? 如果是這樣,你們能給我舉個例子嗎? 先感謝您 :)

當函數遇到await語句時,它會運行右側的代碼以獲取承諾,然后進入睡眠狀態。

其他函數可以同時運行,但在 promise 解決之前,此函數中的任何其他行都不會運行。

這不是缺點。 這就是重點

async function example() {
    const result = await somethingFromAPromise();
    do_something_with(result);
}

如果它沒有停止,那么您將無法在下一行對result進行處理。


這部分文檔說的很長,有時你會遇到這樣的情況:

async function example() {
    const result1 = await somethingFromAPromise();
    const result2 = await somethingFromAnotherPromise();
    do_something_with(resul1, result2);
}

......你有兩個可以並行運行的承諾,因為它們是完全獨立的,但是在第一個完成之前你不會開始第二個。

它還告訴您如何緩解這種情況

async function example() {
    const result1Promise = somethingFromAPromise();
    const result2Promise = somethingFromAnotherPromise();
    const [result1, result2] = await Promise.all(result1Promise, result2Promise);
    do_something_with(resul1, result2);
}

暫無
暫無

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

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