У меня проблема с вложенной функцией обратного вызова, где мне нужна переменная.Получить переменную вложенной функции async в javascript
Так что у меня связь socketio и клиент излучает «getsettings», чтобы получить некоторые данные с помощью обратного вызова
клиент:
Socket.emit('getSettings', function (err, res) {
console.log('Settings retrieved');
console.log(res);
$scope.ip = res.ip;
$scope.port = res.port;
});
Ответ на nodejs сервер выглядит следующим образом прокомментировал это код, который не будет работать, как я надеялся.
nodejs-сервер:
socket.on('getSettings', function (placeholder, callback) {
console.log('Settings are broadcasted.');
// this following "data" variable shall be omitted once the find() problem is solved
var data = {
ip: '192.168.188.32',
port: '9000'
};
// Here I try to get the data from mongodb-database collection "lmssettings"
// via the mongoose-function find().
// This won't work because of its async behavior
//
// lmsSettings.find({}, function (err, res) {
// data = res;
// });
callback(false, data);
});
Я новичок в JS и много читал об этом, так что я знаю, что это проблема с поведением асинхронной находки-функция мангуста, но я не знаю, как изменить код, чтобы он работал правильно.
Надеюсь, у кого-нибудь есть подсказка. Thx заранее ...
Является ли переменная 'data', которая не закомментировала данные только заполнителя? – SimpleJ
Поместите обратный вызов (false, data); 'внутри обратного вызова для' lmsSetting' – adeneo
@adeneo Поместите свой комментарий в качестве ответа (который он), чтобы OP мог принять :) –