我有这个事件,每2秒被外部进程触发一次(它是一个接收数据的串口):
sp.on("data", function (rawData) {
try {
data = JSON.parse(rawData);
var collection = db.get('sensorsCollection');
collection.insert({
...
});
} catch (error) {
debug(error);
}
});
但我想每次只将数据存储在数据库中一次,让我们说500秒,以避免数据库超载。如何实现?
(注意:我尝试使用underscore.js
的函数throttle
,但无法找到如何将参数传递给throttle
中调用的函数,因此我无法&{ #39; t传递包含最新数据的新data
变量。)
答案 0 :(得分:1)
完全没有经过测试,但这样的事情会做你想要的吗?:
(function() {
var collection = db.get('sensorsCollection');
var data = [];
sp.on("data", function (rawData) {
try {
data.push(JSON.parse(rawData));
} catch (error) {
debug(error);
}
});
setInterval(function() { // try-catch here too if necessary
collection.insert(data); // additional formatting?
data = [];
}, 500 * 1000);
}());
编辑以使用setTimeout
而不是throttle
,这对于使用它的方式没有意义。
答案 1 :(得分:0)
存储您的数据,并每隔500秒发送一次: