CNode

初学nodejs, 关于promise使用的一个疑问

问答
Mmoxiaomomo发布于11 年前最后回复11 年前6 回复5869 浏览0 收藏

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

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)

I
i5ting#1·11 年前

看文档吧,一般都是promise.resolve(xxx)

S
struCoder#2·11 年前

.then一般是,第一个参数是err, 第二个是你第一个方法执行的结果

B
bshy522#3·11 年前

用法没问题.

打印的结果是什么?

M
moxiaomomo#4·11 年前
引用 bshy522用法没问题. 打印的结果是什么?

@bshy522 第二个方法获取的参数是空的: getUsersCount = function (data)中的 data是 [undefined undefined]

B
bshy522#5·11 年前
引用 moxiaomomo@bshy522 第二个方法获取的参数是空的: getUsersCount = function (data)中的 data是 [undefined undefined]

@moxiaomomo 你先确保你的程序别的方面没有出问题吧. 你的这个promise的用法是没错的..

M
moxiaomomo#6·11 年前
引用 bshy522@moxiaomomo 你先确保你的程序别的方面没有出问题吧. 你的这个promise的用法是没错的..

@bshy522 谢谢, 应该是程序的问题。另外写了个demo,是正常的。

参与回复
登录后即可参与回复。登录