Await Promise.all() 與多個Await:時間差異
在JavaScript 中,可以使用Promise.all( 來處理非同步操作) 或多個await 語句。雖然這兩種方法最終都有相同的目的,即等待多個 Promise 解決,但它們之間存在一些微妙的時間差異。
場景1:使用Promise.all()
Promise.all() 接受一個Promise 陣列並傳回一個單一Promise,一旦所有輸入Promise 都解決了,該Promise就會解析為一個結果數組,無論它們是否解析或
範例:
const data = await Promise.all([res(3000), res(2000), res(1000)])
在此範例中,Promise.all() 方法延遲資料的解析,直到所有三個輸入的Promise 都得到解析。
場景2:使用多個await語句
在此場景中,多個await語句是用於等待每個單獨的 Promise解決:
const t1 = task1(); const t2 = task2(); const result1 = await t1; const result2 = await t2;
這裡,一旦task1()解決,result1就會解決,一旦task2()解決,result2就會解決。
時序比較
這兩種方法之間的主要時序差異是 Promise.all()延遲最終結果的解析,直到所有輸入承諾都已解決。在必須等待所有任務完成才能繼續的情況下,這可能是有利的。
另一方面,使用多個等待語句允許單獨處理各個任務,從而可能導致更快的總體完成時間.
範例圖
讓我們考慮一個使用延遲函數來模擬非同步的範例任務:
範例#1(使用Promise.all()):
const data = await Promise.all([res(3000), res(2000), res(1000)])
範例#2(使用多個wait 語句):
const t1 = task1(); const t2 = task2(); const t3 = task3(); const result1 = await t1; const result2 = await t2; const result3 = await t3;
範例中#1,Promise.all() 方法會延遲資料解析,直到所有三個任務完成,需要3 秒。在範例 #2 中,由於任務獨立解決,因此 result1 將在 1 秒後可用,result2 將在 2 秒後可用,result3 將在 3 秒後可用。
以上是Promise.all() 與多個等待:時間差異何時重要?的詳細內容。更多資訊請關注PHP中文網其他相關文章!