【发布时间】:2016-04-14 13:04:34
【问题描述】:
我创建了一个 node.js 服务器,现在正尝试将我的 mysql 数据从表发送到浏览器(使用 javascript 客户端接收数据)。
我的问题是,如果我想发送表中的所有行,它可以正常工作,但如果我只想每秒发送一行,它就行不通。
这就是我正在做的事情: 服务器端:
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));
});
}
});
所以基本上我的表中有一个每行都不同的 id,并且我在 for 循环中选择行。 Settimeout 用于延迟 1 秒,以便 socket.emit() 仅在查询完成后 1 秒发送我的数据。
但是,console.log(a) 会延迟打印我的所有行。
我做错了什么? 谢谢。
【问题讨论】:
-
你有什么例外吗?
-
@Tomasito665,不,代码有效。问题是当我在函数内执行
console.log(a)时,我会立即获得表的每个值,没有任何 1 秒延迟。我会将其包含在我的问题中。 -
您可以尝试用以下代码替换您的代码:pastebin.com/e8EvP5rV
console.log(endTime - startTime);输出什么?只是好奇 setTimeout 是否有效。 -
你可能应该从你的问题中删除mysql标签,它主要是关于js本身。
标签: javascript mysql node.js socket.io