Node.js 获取函数的 return 值

Node.js get the return value of a function

我刚开始研究 node.js 并开始了解它的概念,我在理解回调时遇到了一些困难,我想做的是调用函数 函数中的 getUserBranch() getOffers().

我读到,由于 node.js 异步性质,在完成执行后最好使用回调函数来获取所需数据。

现在我无法检索 getUserBranch 返回的值,我不知道该怎么做,嗯回调函数有值,但如何从那里获取值?

file2.js

var getUserBranch = function(email,callback) {


client.execute('SELECT * from branch WHERE email=?', [ email ], function(
        err, data, fields) {
    if (err)

        console.log("error");
    else
        console.log('The solution is in branch: \n', data);
    res = data.rows[0];
    return callback(res);
});

}

file1.js

var getOffers = function (email) {

   var branchObj = require('./file2.js');
   var branchList = branchObj.getUserBranch(email,getList));
   return branchList;
};

var getList = function(res){
  var results=res;
  return results;
}

在异步调用中使用堆栈中的回调函数。看这个:

var getUserBranch = function(email,callback) {
    client.execute('SELECT * from branch WHERE email=?', [ email ], function(err, data, fields) {
        if (err)
            console.log("error");
        else{
            console.log('The solution is in branch: \n', data);
            /* This data stack 3  */
            callback(data.rows[0];);
        }
    });
};

var getOffers = function (email, callback) {
    var branchObj = require('./file2.js');
    branchObj.getUserBranch(email, function(data){
        /* This data stack 2  */
        callback(data);
    });
};

function anyFunction(){
    getOffers("xx@xxx.com", function(data){
        /* This data stack 1  */
        console.log(data);
    });
}