初学nodejs, 关于promise使用的一个疑问
以下代码在运行时, 第一个方法并没有把结果传递到第二个方法, 请问是什么问题?
var Q = require("q");
var getEmailBySessionId = function (mongo_client, redis_client, sid){
var deferred = Q.defer();
redis_client.get('s:' + sid, function(err, email) {
if (!err){
deferred.resolve({db : mongo_client, email : email});
}else{
deferred.reject({err_code: -1});
}
});
return deferred.promise;
};
var getUsersCount = function (data) {
var db = data['db'];
var deferred = Q.defer();
db.collection.count({}, {}, function(err, count){
if (!err){
data['count'] = count;
deferred.resolve(data);
}else{
deferred.reject({err_code : -2});
}
});
return deferred.promise;
});
getEmailBySessionId(mongo_client, redis_client, sid)
.then(getUsersCount)
.done(console.log, console.error);
6 回复
看文档吧,一般都是promise.resolve(xxx)
.then
一般是,第一个参数是err, 第二个是你第一个方法执行的结果
用法没问题.
打印的结果是什么?
@bshy522 第二个方法获取的参数是空的: getUsersCount = function (data)中的 data是 [undefined undefined]
@moxiaomomo 你先确保你的程序别的方面没有出问题吧. 你的这个promise的用法是没错的…
@bshy522 谢谢, 应该是程序的问题。另外写了个demo,是正常的。