在第一次错误回调时退出承诺链
Exit promise chain on first error callback
我有一个看起来像这样的承诺链:
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()
是否真的会退出我的承诺链。它可能会被发送到下一个 .then()
,这肯定行不通。
我正在尝试使用 jasmine 测试框架对此进行测试,但我使用的是我自己的模拟 res 对象。模拟显然没有退出函数的逻辑,但我想知道真正的 express res 对象是否有。
return res.send()
会退出这个承诺链吗?如果没有,我可以通过抛出错误来代替吗?
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);
});
解释:当你链接承诺并发生reject
(错误)时,它会跳过所有后续的fullfill
(成功)回调直到找到 rejection
(error) 回调,它调用第一个找到的拒绝回调(然后继续下一个承诺),如果找到 none,它抛出一个错误。
也 catch(func)
等同于 then(undefined, func)
但更具可读性。
我有一个看起来像这样的承诺链:
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()
是否真的会退出我的承诺链。它可能会被发送到下一个 .then()
,这肯定行不通。
我正在尝试使用 jasmine 测试框架对此进行测试,但我使用的是我自己的模拟 res 对象。模拟显然没有退出函数的逻辑,但我想知道真正的 express res 对象是否有。
return res.send()
会退出这个承诺链吗?如果没有,我可以通过抛出错误来代替吗?
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);
});
解释:当你链接承诺并发生reject
(错误)时,它会跳过所有后续的fullfill
(成功)回调直到找到 rejection
(error) 回调,它调用第一个找到的拒绝回调(然后继续下一个承诺),如果找到 none,它抛出一个错误。
也 catch(func)
等同于 then(undefined, func)
但更具可读性。