美好的一天,
我正在使用node.js https://github.com/felixge/node-mysql mysql 包。
我这里有一个脚本,可以向所有连接的客户端发送数据(至少应该如此)
for(var i = 0; i < clients.length; i++)
{
sql.query("SELECT coins FROM users_steam WHERE steamid="+clients[i].ID,function(err,rows){
if(err) throw err;
var bal = rows[0].coins;
clients[i].send(JSON.stringify({
'type':'roll',
'roundid':ROUND,
'places':r,
'wait':WAIT,
'roundtime':RollTime,
'balance':bal
}));
clients[i].balRefreshes=0;
});
}
尽管问题是,我得到了 TypeError: Cannot call method 'send' of undefined
,这意味着 id 没有正确分配。在这种情况下我应该按顺序执行查询还是做其他事情?
谢谢
最佳答案
我看到的第一个问题是,由于您的数据库调用是异步的并且稍后会被调用,因此变量“i”将与其在选择查询中的值不同。
例如,尝试在控制台中运行以下代码:
for(var i = 0; i < 100; i++)
{
setTimeout(function(){
console.log(i)
}, 1000);
}
你可以尝试这个:
clients.forEach(function(client, i){
setTimeout(function(){
console.log(i)
}, 1000);
});
关于javascript - Websocket 未向所有客户端发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35729856/