【发布时间】:2017-05-04 20:45:37
【问题描述】:
目前正在使用 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()回调中知道刚刚将值添加到数组中的时间。 -
谢谢!计划将我的插入包装在一个函数中,如果其他所有方法都失败了,就这样做。只是想确保在我尝试之前有一种更有效的方法。
标签: html node.js mongodb websocket