初学nodejs, 关于promise使用的一个疑问
发布于 9 年前 作者 moxiaomomo 5152 次浏览 最后一次编辑是 8 年前 来自 问答

以下代码在运行时, 第一个方法并没有把结果传递到第二个方法, 请问是什么问题?

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,是正常的。

回到顶部