当前正在使用Websockets和node.js处理项目。目前,我正在生成一些随机数字,并每隔半秒将它们发送给客户端。从事件处理程序范围中获取变量
var array = [];
wss.on("connection", function (ws) {
setInterval(function() {
var data = Math.floor(Math.random() * 100) + 1; //create a random whole number between 1-100
var msg = JSON.stringify(data); //convert data to JSON string
ws.send(msg); //send JSON string to client
}, 500);
})
但是现在我想每分钟都将当时的值存储到数据库中。我不想在wss.on
函数中嵌套我的插入mongodb,因为它看起来很乱。有没有办法让data
的值超出wss.on
的范围和array
?我试过使用array.push()
,但显然它不起作用。任何帮助和链接到必读的这个问题将不胜感激。
你认为“杂乱”是做到这一点的正确方法。嵌套它。如果你真的想要的话,你可以把插入放在一个单独的函数中,并从间隔中调用它。异步时间只在异步回调中有效,因此您可以在此工作。你可以将'data'放入一个更高范围的数组中并将其存储在那里,但是在'setInterval()'回调中只知道一个值刚添加到数组的时间。 – jfriend00
谢谢!正在计划将我的插入包装在一个函数中,并且如果所有其他方法都失败了,就这样做。只是想在我尝试之前确保有一种更有效的方式。 – Jambo