【发布时间】:2013-12-20 21:47:15
【问题描述】:
我几天前才开始编码,所以我的术语可能有点不对,但这里是。
所以我的 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) 是用户 {} 对象的属性。
那么我该如何解决这个问题?
【问题讨论】:
标签: javascript node.js sockets