Node.js 如何在node js中将值从一个函数返回到另一个函数

Node.js 如何在node js中将值从一个函数返回到另一个函数,node.js,Node.js,我有一个函数getUserId,因为我有另一个函数从db返回值。结果放置在数组arrUser中。数组在函数中打印,但不在另一个函数中打印。有谁能给我答案吗 function getUserId() { var arrUser = new Array(); connection.query('SELECT iUserId,sFromEmailAddress FROM tblFromSenderList',function (err, results, fields) {

我有一个函数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 
}

这很正常。对数据库的查询是异步的,这意味着您正在运行此代码控制台。logarrUser;//在查询完成之前不打印值。您可以在您的案例中使用回调,它是无用的,您可以在一个函数中编写代码…:

function getUserId() {
  getArrayFromDatabase(function(err, result) {
    console.log(result);
  });
}


function getArrayFromDatabase(callback) {
  var arrUser = new Array();

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

    if (results.length > 0) {
      for (var i = 0; i< results.length ;i++){
        var reader = results[i];
        arrUser[reader['sFromEmailAddress']] = reader['iUserId'];
      }

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

      callback(null,arrUser);
    } 
 });
}

var objUser=new getUserId的可能重复项;对象对象对象必须包含数组用户