我刚刚开始编码,所以我的术语可能有些偏差,但是这里有。
所以我的app.js文件中有一个对象var users = {};
。在我的客户端代码中,我有一个函数从输入字段获取$ nickBoxVal()并将其作为(数据)传递到客户端和服务器端作为(数据)。
所以我在客户端有类似的东西:
$nickForm.submit(function(e) {
e.preventDefault;
socket.emit('new user', $nickBox.val(), function(data) {
//stuff
});
$nickBox.val('');
});
并在服务器上:
socket.on('new user', function(data, callback) {
if (data in users) {
callback(false);
} else {
callback(true);
socket.nickname = data;
users[socket.nickname] = socket;
updateNicknames();
}
});
function updateNicknames() {
io.sockets.emit('usernames', Object.keys(users));
}
现在,当我转到下一页时,(数据)变得不确定。我做了很多研究,似乎我的代码在需要同步时是异步的。我找到的所有指南都告诉我在函数外部声明未定义的var,这样它就是一个全局变量,但我的(数据)不是var(据我所知)并且我没有将它定义为我自己。 (data)是用户{}对象的属性。
那么我该如何解决这个问题呢?
答案 0 :(得分:0)
“data”是回调函数的参数。它只在该功能的范围内。其他功能无法参考。调用回调函数时,“data”采用不同的值;引用函数外部的参数是没有意义的。