並發執行多個非同步操作
問題:
在
問題:const value1 = await getValue1Async(); const value2 = await getValue2Async();
問題:
在問題:
在問題:
const [value1, value2] = await Promise.all([getValue1Async(), getValue2Async()]);
在在在下面的程式碼中,非同步操作是依序執行的,而不是同時:
要並發運作操作,我們需要修改程式碼。
解:TL;DR
原始解決方案並行運行兩個操作,但等待第一個操作完成,然後再等待第二個操作。如果一個操作花費的時間明顯長於另一個操作,這可能會導致效能問題。
Promise.all 允許我們等待多個操作同時完成。它接受一個 Promise 數組並傳回一個 Promise,該 Promise 以與原始數組相同的順序解析為結果數組。Promise.all 的優點:
並發執行操作
const getValue1Async = () => { return new Promise(resolve => { setTimeout(resolve, 500, "value1"); }); }; const getValue2Async = () => { return new Promise((resolve, reject) => { setTimeout(reject, 100, "error"); }); }; (async () => { try { console.time("Promise.all"); const [value1, value2] = await Promise.all([getValue1Async(), getValue2Async()]); } catch (e) { console.timeEnd("Promise.all", e); } })();
以上是如何在 JavaScript 中同時執行多個非同步操作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!