【发布时间】:2022-01-24 15:10:30
【问题描述】:
Javascript 函数 Promise.allSettled 等待所有已解决或已拒绝的 Promise 完成。如果其中任何一个被拒绝,Promise.all 将不会返回已解决的承诺,并且 Promise.race 和 Promise.any 只给出第一个已解决或已实现的承诺。
有没有办法发送多个承诺(比如 100 个),然后一旦一个失败(可能有 20 个成功)取消未解决的承诺(其中有 100 - 20 - 1 = 79 个尚未解决) ?我什至不需要失败的细节,只需要一种 Promise.someSettled 函数。
对于上下文,我正在数据和 fetch 调用之间进行映射,我想知道需要重试哪些 fetch。
这可能吗?
【问题讨论】:
-
听起来您正在尝试为大量异步调用构建进度指示器;最好在您的问题中提及这一点。
-
Promise 没有被取消的机制。除此之外,你想在这里建造什么? Promise 可能不适合你。
-
如果没有一个 promise 失败会发生什么?
-
可能只有我一个人,但“甚至不需要失败的详细信息”和“知道需要重试哪些获取”这两个陈述似乎相互矛盾。
-
如果目标是重试失败的提取,那么您只需将重试模式分别应用于每个提取。在两行之间阅读,这就是您想要的,但还有一个额外的要求,即当一些任意数量的提取(或它们的重试)成功时重试停止。
标签: javascript promise