我正在使用 bluebird Promise 库。我想链接承诺并捕获特定的承诺错误。这就是我正在做的事情:
getSession(sessionId)
.catch(function (err) {
next(new Error('session not found'));
})
.then(function (session) {
return getUser(session.user_id);
})
.catch(function (err) {
next(new Error('user not found'));
})
.then(function (user) {
req.user = user;
next();
});
但是,如果 抛出错误getSession
,则调用两个catch
以及第二个then
。我想在第一个停止错误传播catch
,以便第二个catch
仅在getUser
抛出时调用,第二个then
在getUser
成功时调用。做什么?