我创建了一个node.js服务器,现在正在尝试将我的mysql数据从表中发送到浏览器(使用JavaScript客户端接收数据)。如何通过套接字io连接每秒发送一个sql行?
我的问题是,如果我想从我的表中发送所有行,它工作正常,但如果我想每秒发送一行,它不起作用。
这是我在做什么: 服务器端:
io.on('connection', function (socket) {
for (var i = 1; i < 60; i++) {
connection.query('SELECT * FROM jsonlines WHERE id="'+i+'"').on('result', function(data) {
// Push results onto the notes array
var a= JSON.stringify(data);
notes.push(a); //I want to save each line in an array notes
setTimeout(function() {
socket.emit('news', notes[i]);
console.log(a);
}, (1 * 1000));
});
}
});
所以basicaly我在我的表中的ID是为每个行不同,我选择行的for循环。 Settimeout用于执行1秒的延迟,以便socket.emit()仅在查询完成后1秒发送我的数据。
但是,console.log(a)
以延迟打印我的所有行。
我在做什么错? 谢谢。
你骑上任何异常? – Tomasito665
@ Tomasito665,不,代码有效。问题是,当我在函数内部执行'console.log(a)'时,我立即得到了我的表的每个值,而没有任何1秒的延迟。 我会在我的问题中包括这一点。 –
你可以尝试用这个替换你的代码:http://pastebin.com/e8EvP5rV什么'console.log(endTime - startTime);'输出?只是好奇,如果setTimeout甚至工作。 – Tomasito665