p-any 与 Promise.any

p-any versus Promise.any

问题

p-any package suggests that it is a replacement for Promise.race given this link作为一个理由。正如 p-any 所建议的那样,在大多数情况下它似乎是一个更好的选择,但是 Promise.any 似乎做同样的事情。

我的理解

Promise.race 接受 Iterable 个承诺,returns 第一个以错误或解决方案完成的承诺。

Promise.any returns 第一个解决并忽略失败的承诺。

帮助

我的理解对吗? p-anyPromise.any 做同样的事情吗?感谢您的帮助

如果您的问题是 p-anyany 函数和标准 Promise.any 函数是否做同样的事情,那么根据 p-any 的文档,是的, 他们是这样。当 iterable 的第一个 promise 得到满足时,它们都会得到满足,或者如果 iterable 的所有 promise 都被拒绝,它们都会被 AggregateError 拒绝。

Promise.any 仍然只是 Stage 3 proposal,尽管它可能很快就会进入第 4 阶段。 p-any 和类似的大概早于该努力。

此图表(我希望 SO 的 markdown 允许表格!) 可能有助于理解不同的 Promise 组合器:

+−−−−−−−−−−−−−−−−−−−−+−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+−−−−−−−−−−−−−−−−−−+
| Name               | Description                                     | Added In         |
+−−−−−−−−−−−−−−−−−−−−+−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+−−−−−−−−−−−−−−−−−−+
| Promise.allSettled | does not short−circuit                          | ES2020           |
| Promise.all        | short−circuits when an input value is rejected  | ES2015           |
| Promise.race       | short−circuits when an input value is settled   | ES2015           |
| Promise.any        | short−circuits when an input value is fulfilled | Stage 3 proposal |
+−−−−−−−−−−−−−−−−−−−−+−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+

This article 提案链接也可以。