从事件处理程序范围

时间:2016-12-19 18:21:16

标签: html node.js mongodb websocket

目前正在使用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(),但显然它不起作用。非常感谢任何有关此事项所需阅读的帮助和链接。

1 个答案:

答案 0 :(得分:1)

将我的评论写成答案,因为它似乎正是您所寻找的。

你的想法是什么"凌乱"是正确的方法。嵌套它。如果你真的想要,可以将插入放在一个单独的函数中,并从间隔内部调用它。异步时序仅在异步回调中有效,因此您可以在其中执行工作。您可以将数据放入更高范围的数组并将其存储在那里,但是只有在setInterval()回调中才知道何时将值添加到数组中的时间。