bluebird Promise ライブラリを使用しています。promise をチェーンして、特定の 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();
});
しかし、 によってエラーがスローされた場合、 2 番目の と同様にgetSession
2 つが呼び出されます。最初の でエラーの伝播を停止したいので、2 番目はスローされたときにのみ呼び出され、2 番目は成功したときに呼び出されます。どうする?catch
then
catch
catch
getUser
then
getUser