在ES7/ES2016中,使用多個await語句不會並行執行函數。相反,它們是按順序執行的,就像用 Promise 連結 .then() 一樣。
範例:
await someCall(); await anotherCall();
在此範例中,anotherCall() 只會是someCall() 完成後呼叫。
並行化非同步函數呼叫
要並行執行非同步函數,有以下幾種選擇:
Node.js 中最簡單的方法是使用Promise.all()包裝要同時執行的非同步函數:
await Promise.all([someCall(), anotherCall()]);
這將創建一個代表所有輸入承諾完成的承諾。
如果需要儲存結果,可以在await語句中使用解構:
let [someResult, anotherResult] = await Promise.all([someCall(), anotherCall()]);
Promise.all 很快就會失敗。這意味著如果任何輸入承諾被拒絕,整個操作將被拒絕並出現該錯誤。
以上是如何在 JavaScript 中並發執行非同步函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!