如何在节点js中将值从一个函数返回到另一个函数

时间:2016-04-12 09:33:01

标签: node.js

我有一个函数getUserId(),我有另一个从db返回值的函数。结果放在数组arrUser中。数组在函数中打印,但不在另一个函数中打印。任何人都可以给我解决方案

function getUserId() {

    var arrUser = new Array();

    connection.query('SELECT iUserId,sFromEmailAddress FROM tblFromSenderList',function (err, results, fields) {
        if (err) {
            throw err;
        }

        if (results.length > 0) {
            for (var i = 0; i< results.length ;i++){
                var reader = results[i];
                // console.log(reader['sFromEmailAddress']+" == " + reader['iUserId']); //ADD string - 'ID: 1'
                arrUser[reader['sFromEmailAddress']] = reader['iUserId'];
            }

            console.log(arrUser); // prints value over here

            return arrUser;
        } 
    });

     console.log(arrUser);  // does not print value 
}

1 个答案:

答案 0 :(得分:-1)

这是正常的。对数据库的查询是异步的,这意味着您在查询完成之前运行此代码Device Mode。您可以使用回调(在您的情况下,它没用,您可以在一个函数中编写代码......):

console.log(arrUser);  // does not print value