Мы хотели бы сократить количество блоков catch внутри наших обещаний. Если мы удалим вложенные уловы, будут ли исключения забрасываться до родительского улова?Нужны ли вложенные уловы в рамках обещаний?
temporaryUserModel.findOne({email: req.body.email})
.then(tempUser => {
if (tempUser) {
temporaryUserModel.findOneAndUpdate({_id: tempUser.toJSON()._id}, user)
.then((doc) => {
return res.status(200).json({
status: 'Success',
data: {url: planOpted.chargifySignupUrl}
});
})
.catch(err => error(err, res));
} else {
temporaryUserModel(user).save()
.then((doc) => {
return res.status(200).json({
status: 'Success',
data: {url: planOpted.chargifySignupUrl}
});
})
.catch(err => error(err, res));
}
})
.catch(err => error(err, res));
Мы хотели бы удалить два вложенных улова и сохранить только улов внизу. Это нормально?
Вы не сказали * почему * Вы хотите удалите внутренние уловы, но я предлагаю посмотреть здесь -> http://bluebirdjs.com/docs/api/catch.html и здесь -> http://bluebirdjs.com/docs/api/promise.all.html – GojiraDeMonstah
вам нужно вернуть свои внутренние обещания, тогда вы можете пузырить свои исключения – hackerrdave
отклонил обещания и, таким образом, '.catch()' будет пузырить цепочку обещаний, если и только если вы возвращаете гостиницу er обещает от '.then()' обработчик, которого вы не являетесь. Это единственный способ, которым внутренние обещания привязаны к внешней цепочке. – jfriend00