JavaScript Promise.any() 方法2025年4月23日 | 阅读 6 分钟 当我们在可迭代对象(如数组)中提供的任何一个 Promise 被成功fulfilled(履行)或resolved(解决)时,该过程将返回一个接受(accept)或拒绝(reject)的 Promise。 Promise.any() 是并发 Promise 方法之一。通过这种方式返回第一个 fulfilled 的 Promise 非常有用。一旦一个 Promise 被 fulfilled,它就会短路,而不是等待其他 Promise 遵循。 Promise.any() 会在传入的 Promise 中至少有一个被满足时resolved,如果所有 Promise 都未被满足,则会以 AggregateError 被rejected。 语法下面的语法展示了带有输入 Promise 参数的 Promise.any() 方法。 解释: Promise.any() 返回一个单一的 Promise,当数组对象中的任何一个 Promise 被 fulfilled 时,该 Promise 将解析为被 fulfilled 的 Promise 的结果值。 返回值: 此方法返回以下值 如果提供的参数是 void,则返回一个已 fulfilled 的 Promise。 在所有其他情况下,会创建一个待定(pending)的 Promise,其中包含传入的每个 Promise 的值和特定状态。
Promise.any() 方法的工作流程
图表输入参数图 下图显示了所有 Promise 都 fulfilled 的 Promise.any() 方法的操作。 ![]()
即使可迭代对象中的某些 Promise 被 rejected,any() 也会返回一个 Promise,该 Promise 对于任何第一个 fulfilled 的 Promise 都会 fulfilled。 输入参数图 下图显示了 Promise.any() 方法的一个 Promise 被 rejected,而其他 Promise 被 fulfilled 的操作。 ![]()
请注意,Promise.any() 方法会忽略被拒绝的 Promise (promise1)。
输入参数图 下图显示了所有 Promise 都 rejected 的 Promise.any() 方法的操作。 ![]() 在时间 t1,promise1 因错误 error1 而被 rejected。 在时间 t2,Promise2 因错误 error2 而被 rejected。 Promise.any() 方法返回的 AggregateError 包含所有被 rejected 的 Promise 的 error1 和 error2,以及一个在时间 t2 被 rejected 的 Promise。 JavaScript Promise.any() 方法的示例下面的示例展示了带有所有输入 Promise 的 Promise.any()。我们可以让所有 Promise fulfilled,rejected,或者 mixed(混合)。 示例 1 JavaScript 的 Promise.any() 方法的基本用法,用于处理结果和值,并带有输入参数。使用该方法,我们可以获取 undefined 的值和结果状态以及时间。 输出 这张图片显示了 promise.any() 方法的所有 resolved 值。 ![]() 示例 2 该示例展示了 Promise 中一个被 rejected 和一个被 resolved 的情况,使用了 promise 方法。这里我们使用多个 Promise 并设置操作的时间。 输出 这张图片显示了 promise.any() 方法的一个 rejected 和一个 resolved 值。 ![]() 示例 3 该示例展示了 Promise 中所有 Promise 都被 rejected 的情况,使用了 promise 方法。这里我们使用多个 Promise 并设置功能所需的时间。 输出 这张图片显示了 promise.any() 方法的所有 rejected 值。 ![]() 示例 4 promise.any() 方法使用 then、catch 和 finally 来 fulfilled 操作并显示输出。我们可以将所有这些方法与 promise.any() 的空可迭代值一起使用。finally 函数会调用输入信息并将其显示为输出。 输出 控制台选项卡显示了带有聚合信息的输出。 ![]() 何时在 JavaScript 中使用 Promise.any() 方法使用 Promise.any() 方法来提供第一个 fulfilled 的 Promise。Promise.any() 函数不会等到所有 Promise 都 fulfilled。换句话说,当一个 Promise 被 fulfilled 时,Promise.any() 函数就会短路。 例如,您可能有一个资源由两个或多个提供内容的网络(CDN)使用。Promise.any() 方法可用于动态加载第一个可用的资源。 示例 以下示例使用 Promise.any() 方法检索两个图像,并显示第一个可用的图像。 输出 输出显示了一个 Promise 数据图像和一个 rejected 的图像。 ![]() 它的工作原理
结论使用 JavaScript Promise.any() 方法来确定列表中哪个 Promise 最先满足。 |
我们请求您订阅我们的新闻通讯以获取最新更新。