在下面的代码中,Room.find().exec()
有一个回调函数,可以生成变量room
。如何在Player.find.exec()
内的嵌套回调函数内访问该对象?
addplayer: function(req, res) {
Room.find(req.param('roomid')).exec(function(err, room) {
if (err) {
console.log(err);
return res.send(err, 404);
} else {
if (req.param('playerid') && req.param('playerid').length > 0) {
console.log("Room found:", room);
Player.find(req.param('playerid')).exec(function(err, player) {
if (err) {
console.log(err);
return res.send(err, 404);
} else {
if (typeof room.players === 'undefined' || !room.players.isArray) room.players = new Array();
room.players.push(player);
room.save();
console.log(player);
return res.send(room, 403);
}
});
} else {
console.log('No player id.');
return res.send('No player id.', 404);
}
}
});
}
这样可以让您更轻松地查看我的问题:
答案 0 :(得分:3)
room
仍然可以访问。
在函数返回后仍然定义变量的原因是因为javascript允许嵌套回调保存对周围变量的引用。