gpt4 book ai didi

javascript - Promise:当抛出错误时,其他异步请求会发生什么?

转载 作者:行者123 更新时间:2023-11-30 12:24:23 24 4
gpt4 key购买 nike

我正在使用 Bluebird promise。这在文档中并不是很明确。假设以下情况,假设所有实例都是适当的 promise :

FindSomeDBModel.then(function(model) {
return [
model.getOtherModels(),
aHTTPRequest('https://google.com')
];
}).spread(function(otherModels, httpResponse) {
// some code
}).catch(function(err) {
res.status(500).send(err);
});
  1. 如果 model.getOtherModelsaHTTPRequest 都抛出错误, 中的 err 变量会是什么捕获?

  2. 此外,如果 model.getOtherModels 首先抛出错误,它会导致向客户端发送响应还是等待 aHTTPRequest去完成?随后,aHTTPRequest 抛出,然后会发生什么?

  3. 我能否在其中一个请求抛出错误时立即回复客户端?因为另一个响应是否完成并成功不再重要。

最佳答案

如果这两个 promise 执行中的一个发生错误,将会发生什么

  • 在您的 catch 回调中收到错误
  • 另一个 promise 不受影响,继续执行
  • 你给 spread 的回调没有被调用

如果 model.getOtherModelsaHTTPRequest 都抛出错误,只有第一个会被 catch 接收,另一个只会被忽略。

你给 catch 的回调会尽快被调用,当第一个错误被抛出时,你的代码不会等待另一个错误的执行。

关于javascript - Promise:当抛出错误时,其他异步请求会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29965704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com