【发布时间】:2015-11-11 16:17:48
【问题描述】:
我有一个 Node.js (express.js)-Server,我在其中提供了一个简单的 auth-api。
在我的一条路线中,我在返回“资源”之前更改了很多子步骤。
我正在使用 bluebird 作为承诺。
router.post('/register', function(req, res, next) {
// ------- 1. check if already existing
var p = store.checkIfExisting(req, res) //-->mongoose .find(). Returns promise
.then(function(isExisting) {
if (isExisting) {
console.log("try to cancel");
p.cancel();
}
// ------- 2. Facebook validation
return validateFacebookSignedRequest(req.body.fbsrCookie); //True/False
})
.then(function(fbIsValid) {
// ------- 3. create Users
return store.saveUser(req, res); // --> mongoose.save(). Returns promise
})
.then(function(user) {
// ------- 4. Token generieren
return store.generateTokenForFbUID(req, res);
}).then(function(token) {
// ------- 5. send back the token
res.send({
success: true,
message: token
});
})
.cancellable()
.catch(function(err) {
console.log("canceled");
});
});
所以我想知道...
在检测到某些错误时如何中断链 子步骤(现在我使用
p.cancel();)在链的某些
thens 中,我正在返回具体值(如令牌),在其他一些情况下,我正在返回承诺。似乎蓝鸟可以同时处理这两种情况并且不会中断链条(这实际上让我感到困惑,因为我返回的数字没有then-method
【问题讨论】:
标签: node.js express promise bluebird