调用双函数我的Node.js应用程序中有一个循环,它不断从我的数据库中提取“未处理”行(每秒请求1次)。防止通过参数
我从数据库中获得的每一行都将调用一个唯一的数字ID,并从数据库中其他细节参数的函数。一旦数据在这个函数内被处理,数据库就会被更新,并且该行被标记为“已处理”。
function fetch() {
db.query("SELECT id, data FROM table WHERE processed=0 ORDER BY id ASC", function(err, results) {
if(results.length > 0) {
for(var i=0; i<results.length; i++)
process(results[i].id, results[i].data);
}
});
}
var interval_fetch = setInterval(fetch, 1000);
function process(id, data) {
// Process data
db.query("UPDATE table SET processed=1 WHERE id="+id);
}
然而,在某些情况下,它需要比第二处理更多的数据并更新数据库。在这种情况下,process()会使用相同的参数调用两次甚至更多次。
什么是Node.js的环境最简单的方法,以保证功能的同时具有一定的ID参数只能调用一次?
是否有提供此功能,需要额外的代码只有两三行的任何包? (这个解决方案不一定要防止多次调用该函数,如果我能够在process()中检查,如果它已经被一个特定的ID调用,那么我可以在它之前结束它数据被处理两次。)
相信'setInterval'的意图是因为他要重复作业每一秒,不是因为他只希望它发生一次。 – Nucleon
这就是为什么我在那里添加递归'setTimeout'调用 –
我很感谢您的回复。该包部分做我想要的,但setTimeout建议不。请看我自己的答案。 – 1nsane