当其中一个失败时,所有人如何处理多个API调用?

发布于 2025-01-26 06:08:03 字数 372 浏览 4 评论 0原文

我对Promise.All处理拒绝有一个疑问。

假设我们有以下命令

await Promise.all([
  server1.logMessage(),
  server2.logMessage()
])

,假设Server1需要2秒来进行日志,而Server2则需要5秒来进行日志。

如果server1.logmessage()在1秒内返回错误,会发生什么。我们可以确定即使来自Promise.all的结果承诺被拒绝,Server2至少会记录消息?

还是我需要使用Promise.AllSettled

I had a question on how promise.all handles rejection.

Let's say we have the following command

await Promise.all([
  server1.logMessage(),
  server2.logMessage()
])

And let's say server1 takes 2secs to log and server2 takes 5secs to log.

And what happens if the server1.logMessage() returns a error in 1 sec. Can we be sure that server2 will at least log the message even though the resultant promise from promise.all is rejected?

Or do i need to use Promise.allSettled?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

彩虹直至黑白 2025-02-02 06:08:03

是的,您的承诺看起来是独立的。您的代码等同于此:

const prom1 = server1.logMessage();
const prom2 = server2.logMessage();
await Promise.all([prom1, prom2])

所有Promise.all确实是调整该块中的程序的流程 - 它不会影响logmessage /代码>可能会或可能不会。如果一个logmessage碰巧记录了一条消息,或者碰巧发生错误,则不会对另一个logmessage做什么。

Yes, your promises look to be independent. Your code is equivalent to this:

const prom1 = server1.logMessage();
const prom2 = server2.logMessage();
await Promise.all([prom1, prom2])

All the Promise.all does is adjust the flow of the program in that block - it doesn't affect what either logMessage may or may not do. If one logMessage happens to log a message, or if it happens to error instead, that'll have no effect on what the other logMessage does.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文