socket.emit 在 while 循环中
socket.emit in while loop
我正在尝试每 1 秒向服务器发送一些 JSON。
while (i > 1) {
var checkData = setInterval (function () {
var db = new sqlite3.Database('hud_db_master.sqlite3');
db.all("SELECT * FROM hud ORDER BY col_id DESC LIMIT 1;", function(err, rows) {
console.log(rows);
var jsonData = JSON.stringify(rows);
socket.emit('clientMessage', jsonData, 'Pi-Voyager');
});
}, 1000);
}
我得到一个空白控制台大约 20 秒,然后出现以下错误:
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory
在搞乱 setInterval 之前,我能够在执行时成功发出一次数据。
您在开始时调用了 while (i > 1) {
但永远不要将其调到低于 1 的位置,这会使它陷入无限循环 运行 直到内存不足
如果删除 while
循环,根据我的假设,您应该仍能成功实现预期结果
编辑:
此外,您的数据库没有任何意义,因为您每秒钟都创建一个新数据库。将调用移至 db
创建循环之外
我正在尝试每 1 秒向服务器发送一些 JSON。
while (i > 1) {
var checkData = setInterval (function () {
var db = new sqlite3.Database('hud_db_master.sqlite3');
db.all("SELECT * FROM hud ORDER BY col_id DESC LIMIT 1;", function(err, rows) {
console.log(rows);
var jsonData = JSON.stringify(rows);
socket.emit('clientMessage', jsonData, 'Pi-Voyager');
});
}, 1000);
}
我得到一个空白控制台大约 20 秒,然后出现以下错误:
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory
在搞乱 setInterval 之前,我能够在执行时成功发出一次数据。
您在开始时调用了 while (i > 1) {
但永远不要将其调到低于 1 的位置,这会使它陷入无限循环 运行 直到内存不足
如果删除 while
循环,根据我的假设,您应该仍能成功实现预期结果
编辑:
此外,您的数据库没有任何意义,因为您每秒钟都创建一个新数据库。将调用移至 db
创建循环之外