【问题标题】:Unable to return value from Promise function Node.js无法从 Promise 函数 Node.js 返回值
【发布时间】:2018-07-05 18:00:02
【问题描述】:

我正在使用 Nodejs 的 sequelize。我想在调用此函数 createMobileUser 时查看 ret 的值,但我得到 undefined 。我怎样才能做到这一点。对不起,我是 Node.js 的新手,但在发布之前我已经搜索了几个链接。

exports.createMobileUser = function(Mobile,reg_list) {

var ret = -1;
    if(reg_list.length ==5 && reg_list !=undefined)
    {
        var  mobile_owner_name = reg_list[0];
        var  email = reg_list[1];
        var phone_no = reg_list[2];
        var mobile_name = reg_list[3];
        var country = reg_list[4];
        var test = Mobile.create({
            mobile_mac_address: "0",
            mobile_owner_name: mobile_owner_name,
            mobile_name: mobile_name,
            mobile_owner_phone: phone_no,
            mobile_owner_email: email,
            mobile_owner_country: country,
            is_checked : "0",
            is_occupied : "0"
        }).then((result) => {
            ret = 1;
            return ret;
            console.log("inside result");
            //console.log(result);
        }).catch(err=>{
            ret = -1;
            return ret;
            console.log("inside error");
           // console.log(err);
        });
    }
    console.log(ret);
    return ret;

};
var test =   this.createMobileUser(db.Mobiles,reg_list);
//returning undefined

【问题讨论】:

  • 那是 jquery 。我需要以调用函数的方式以及在函数内部调用 promise 异步函数的方式来回答
  • jQuery 是 Javascript,节点是 Javascript。有区别。这篇文章是对您问题的一般回答:“如何从异步调用中返回值?”

标签: node.js promise sequelize.js


【解决方案1】:

你应该返回一个promise

exports.createMobileUser = function (Mobile, reg_list) {
    return new Promise((resolve, reject) => {
        if (!(reg_list.length == 5 && reg_list != undefined)) return reject(-1); //better reject with some useful Error
        resolve();

    })
        .then(() => {
            var mobile_owner_name = reg_list[0];
            var email = reg_list[1];
            var phone_no = reg_list[2];
            var mobile_name = reg_list[3];
            var country = reg_list[4];
            var test = Mobile.create({
                mobile_mac_address: "0",
                mobile_owner_name: mobile_owner_name,
                mobile_name: mobile_name,
                mobile_owner_phone: phone_no,
                mobile_owner_email: email,
                mobile_owner_country: country,
                is_checked: "0",
                is_occupied: "0"
            });
            return test;
        })
        .then((result) => {
            ret = 1;
            return ret;
            console.log("inside result");
            //console.log(result);
        })
}


var test =
    this.createMobileUser(db.Mobiles, reg_list)
        .then((value) => {
            console.log("inside result", value);
        })
        .catch((err) => {
            console.log('inside error')
        })

【讨论】:

    猜你喜欢
    • 2015-09-23
    • 1970-01-01
    • 2015-03-04
    • 2020-05-12
    • 2020-03-28
    • 1970-01-01
    • 2018-12-16
    • 2013-04-22
    相关资源
    最近更新 更多