2015-10-06 164 views
1

我刚开始研究node.js并了解它的概念,我在理解回调方面遇到了一些麻烦,我试图做的是调用函数getUserBranch( )中的函数getOffers()Node.js获取函数的返回值

我读到,因为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; 
} 

回答

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("[email protected]", function(data){ 
     /* This data stack 1 */ 
     console.log(data); 
    }); 
} 
+0

That worked :) Thank you – user3048440