У меня есть цепь обещаний, выглядит следующим образом:Выход обещание цепь на первый обратный вызов ошибки
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()
, который определенно не сработает.
Я пытаюсь проверить это с помощью рамки теста жасмина, но я использую свой собственный издеваемый объект res. Разумеется, у макета нет логики для выхода из функции, но мне интересно, реализует ли реальный объект res res.
Will return res.send()
выход из этого обещания цепь? Если нет, могу ли я вместо этого вырваться из-за ошибки?
Будет ли последнее решение поймать ошибку, которая происходит в середине цепи, скажем, во втором я обеспечил или гипотетическую третью? Также очень чистый и понятный ответ. – ritmatter
@ritmatter да, он ловит, если ничего перед этим не поймал отклонение уже, также я обновил ответ, надеюсь, что теперь это станет более ясным. – mido
спасибо за разъяснение, хорошее решение для темы, на удивление трудно найти простую информацию о – ritmatter