首頁  >  文章  >  web前端  >  如何為動態數組順序執行 Promise?

如何為動態數組順序執行 Promise?

Barbara Streisand
Barbara Streisand原創
2024-10-20 14:58:30491瀏覽

How to Execute Promises Sequentially for Dynamic Arrays?

使用動態填滿的陣列順序執行 Promise

使用陣列時,通常需要為每個元素順序執行一系列任務,並在 Promise 之間傳遞參數。

Promises 的順序執行

要實現這一點,可以使用一系列巢狀的 .then() 呼叫。然而,隨著數組大小的增加,這種方法變得麻煩且不靈活。

使用Reduce進行折疊

一個簡潔的解決方案是使用.reduce() 方法將數組折疊成一系列Promise 數量:

<code class="js">const promiseChain = myArray.reduce(
  (p, x) => p.then(() => myPromise(x)),
  Promise.resolve()
);</code>

用於循環的非同步函數

更容易維護的方法是使用非同步函數來迭代數組並按順序執行每個Promise:

<code class="js">const forEachSeries = async (iterable, action) => {
  for (const x of iterable) {
    await action(x);
  }
};

forEachSeries(myArray, myPromise);</code>

收集回傳值

如果需要promise的回傳值,可以對mapSeries函數稍作修改:

<code class="js">const mapSeries = async (iterable, fn) => {
  const results = [];

  for (const x of iterable) {
    results.push(await fn(x));
  }

  return results;
};</code>

這種方法在以下情況下提供了更大的靈活性和程式碼可讀性:處理承諾的動態陣列。

以上是如何為動態數組順序執行 Promise?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn