2015-10-06 2 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

Это сработало :) Спасибо – user3048440

Смежные вопросы