【发布时间】:2016-01-05 20:38:06
【问题描述】:
首先,我想问一下,这对于使用 Promise 是否是一个很好的解决方案。
app.get('/sample', function(req, res) {
var promiseFlow = {
step1: function() {
return modelPromise1();
},
step2: function(result) {
if(result) {
// I would like to stop the promise chain here
res.send(result);
} else {
return modelPromise2();
}
},
step3: function(result) {
if(result) {
res.send(result);
} else {
// This will be sent always
res.send(false);
}
}
}
promiseFlow.step1()
.then(promiseFlow.step2)
.then(promiseFlow.step3)
.catch(function(error) {
console.log(error);
});
});
用户模型示例:
_self.get_user_info = function(_guid) {
var deferred = modules.Q.defer();
modules.system.db.connect(deferred, function(connection) {
var query = modules.qb.select().from('users')
.field('_guid')
.field('username')
.where('_guid = ?', _guid);
connection.query(query.toString(), function(error, result) {
connection.release();
if(error) {
deferred.reject(error);
return;
}
if(result.length) {
deferred.resolve(result);
} else {
deferred.reject(null);
}
});
});
return deferred.promise;
}
我的主要问题是我不知道如何打破链条 执行下一步。 res.send(false) 无论如何都会在第 3 步发生。 这东西可以工作吗,或者我应该为此选择其他模式。
谢谢!
【问题讨论】:
标签: javascript node.js promise q