使用数组参数顺序执行 Promise
在某些情况下,您可能需要顺序执行 Promise,从数组传递参数。当动态填充数组并且执行顺序至关重要时,这是必要的。
创建“可暂停循环”的一种方法是重复使用 .then 方法。然而,这可能很麻烦,并会导致金字塔形的 Promise 链。
使用 Promise
更简洁的解决方案涉及使用 Array.reduce 将 Promise 链折叠成单个 Promise:
myArray.reduce( (p, x) => p.then(() => myPromise(x)), Promise.resolve() )
这种方法创建了一系列链式承诺,确保顺序执行。
使用异步函数
或者,异步函数可以实现更具可读性和更高效的实现。以下示例使用异步函数来迭代并执行 Promise:
const forEachSeries = async (iterable, action) => { for (const x of iterable) { await action(x) } } forEachSeries(myArray, myPromise)
收集返回值
如果需要从 Promise 收集返回值,可以使用修改后的版本forEachSeries 函数的 mapSeries:
const mapSeries = async (iterable, fn) => { const results = [] for (const x of iterable) { results.push(await fn(x)) } return results }
此函数迭代可迭代对象,收集 Promise 的结果并返回结果数组。
通过使用这些技术,您可以轻松地按顺序执行 Promise,从数组传递参数,确保执行顺序并根据需要收集结果。
以上是如何使用数组参数顺序执行 Promise?的详细内容。更多信息请关注PHP中文网其他相关文章!