首页  >  文章  >  web前端  >  如何为动态数组顺序执行 Promise?

如何为动态数组顺序执行 Promise?

Barbara Streisand
Barbara Streisand原创
2024-10-20 14:58:30497浏览

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