我遇到嵌套回调函数的问题,我需要一个变量。
所以我有一个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的新手并且阅读了很多关于它的内容,以便我知道mongoose的find-function的异步行为存在问题,但我不知道如何更改代码,它是会正常工作。
希望有人对我有所暗示。 Thx提前......
答案 0 :(得分:0)
异步功能有回调功能,使用res
回调中收到的数据(.find
)并将其传递给您的callback
功能:
socket.on('getSettings', function (data, callback) {
console.log('Settings are broadcasted.');
lmsSettings.find({}, function (err, res) {
callback(false, res);
});
});
我认为这应该可以解决您的问题。