【问题标题】:Node.js get the return value of a functionNode.js 获取函数的返回值
【发布时间】:2016-01-03 18:41:36
【问题描述】:

我刚开始研究 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;
}

【问题讨论】:

    标签: javascript node.js callback return


    【解决方案1】:

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

    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);
        });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-08
      • 1970-01-01
      • 2018-08-25
      • 1970-01-01
      • 2018-06-25
      相关资源
      最近更新 更多