当其中一个失败时,所有人如何处理多个API调用?
我对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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,您的承诺看起来是独立的。您的代码等同于此:
所有
Promise.all
确实是调整该块中的程序的流程 - 它不会影响logmessage
/代码>可能会或可能不会。如果一个
logmessage
碰巧记录了一条消息,或者碰巧发生错误,则不会对另一个logmessage
做什么。Yes, your promises look to be independent. Your code is equivalent to this:
All the
Promise.all
does is adjust the flow of the program in that block - it doesn't affect what eitherlogMessage
may or may not do. If onelogMessage
happens to log a message, or if it happens to error instead, that'll have no effect on what the otherlogMessage
does.