gpt4 book ai didi

javascript - 在第一个错误回调时退出 promise 链

转载 作者:行者123 更新时间:2023-12-03 10:48:09 24 4
gpt4 key购买 nike

我有一连串的 promise ,如下所示:

   Transaction.findPublic({}).then(function(transactions) {
combined = combined.concat(transactions);
return JoinEvent.find().exec();
}, function(err) {
return res.status(503).send(err);
}).then(function(joins) {
combined = combined.concat(joins);
return NewCategoryEvent.find().exec();
}, function(err) {
return res.status(503).send(err);
});

目前还不清楚这个 res.send() 是否真的会退出我的 promise 链。它可能会被发送到下一个 .then(),这肯定不起作用。

我正在尝试使用 jasmine 测试框架来测试它,但我使用的是我自己的模拟 res 对象。模拟显然没有退出函数的逻辑,但我想知道真正的 Express res 对象是否有。

return res.send() 会退出这个 promise 链吗?如果没有,我可以通过抛出错误来突破吗?

最佳答案

Transaction.findPublic({}).then(function(transactions) {
combined = combined.concat(transactions);
return JoinEvent.find().exec();
}).then(function(joins) {
combined = combined.concat(joins);
return NewCategoryEvent.find().exec();
}).catch(function(err) {
res.status(503).send(err);
});

说明:当您链接 Promise 并发生 reject(错误)时,它将跳过所有后续的 fullfill(成功)回调,直到找到一个 rejection(error) 回调,它调用第一个找到的拒绝回调(然后继续执行下一个 Promise),如果没有找到,它会抛出一个错误。

另外 catch(func) 相当于 then(undefined, func) 但更具可读性。

了解更多信息:promise error handling.

关于javascript - 在第一个错误回调时退出 promise 链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28491640/

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