【发布时间】:2017-05-11 05:55:49
【问题描述】:
我们希望减少我们的 Promise 中的 catch 块数量。如果我们删除嵌套的 catch,异常会冒泡到父 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));
我们想移除两个嵌套的 catch 并只保留底部的 catch。这样可以吗?
【问题讨论】:
-
你还没有说为什么你要移除内扣,但我建议看这里--> bluebirdjs.com/docs/api/catch.html和这里--> bluebirdjs.com/docs/api/promise.all.html跨度>
-
你需要回报你内心的承诺,然后你可以冒泡你的例外
-
rejected promises,因此
.catch()将在promise 链中冒泡当且仅当您从.then()处理程序返回内部promise 时,您不是。这是将内部承诺附加到外部链的唯一方式。
标签: javascript mongoose promise bluebird