蓝鸟承诺解析(数据)在客户端代码中未定义

2024-04-02

希亚斯。我有一个简单的应用程序,客户端期望得到一个承诺作为结果,但是在调用resolve()方法时,承诺不断返回未定义的结果。

客户端代码:

UsersRepo.findOneAsync({id: id}).then(function(err, result) {
    console.log("UserService promise resolution", err, result);
});

这分别针对 err 和 result 输出“null”和“undefined”

正在执行工作并返回承诺的代码:

findOneAsync: function(args) {
    var where = ""; //omitted

    var promise = new Promise(function(resolve, reject) {
        db.query("Select * from users" + where + " limit 1", function(err, result) {
            var res = { id: 1, username: 'username', firstName: 'First', lastName: 'Last' };

            if(err != null) {
                console.log("REJECT", err);
                reject(err);
            }
            else {
                console.log("RESOLVE", res);
                resolve(null, res);
            }
        });
    });

    return promise;
}

正如您所看到的,我只是为此测试返回一些静态数据(“res”变量)。在客户端代码中,控制台语句总是打印出:

UserService promise resolution null undefined

我不明白这一点。看起来我做的一切都是正确的:用数据调用resolve()方法,并且客户端代码正确地使用.then(function(err, result)),看起来是这样。为什么客户端收不到数据?

谢谢你的帮助!

==>

解决方案:

如下所述,Bluebird 的拒绝和解决仅采用一个参数。第一个“null”仅被看到。将代码更改为“resolve(res)”有效。多谢你们。


Resolve/Reject 都接受单个参数...因此为什么你的结果是未定义的,因为你传递给解析的第二个值从未被使用,第一个值为 null

你想做的是

UsersRepo.findOneAsync({id: id}).then(function(result) {
    console.log("UserService promise resolution", result);
}).catch(function(err) {
    console.log("UserService promise error", err);
});

findOneAsync: function(args) {
    var where = ""; //omitted

    var promise = new Promise(function(resolve, reject) {
        db.query("Select * from users" + where + " limit 1", function(err, result) {
            var res = { id: 1, username: 'username', firstName: 'First', lastName: 'Last' };

            if(err != null) {
                console.log("REJECT", err);
                reject(err);
            }
            else {
                console.log("RESOLVE", res);
                resolve(res);
            }
        });
    });

    return promise;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝鸟承诺解析(数据)在客户端代码中未定义 的相关文章