2014-02-26 74 views
0

我有一个例程轮询数据库以寻找工作,如果它在那里找到工作,它应该执行它。它一次只能执行1(一个)工单,而这个工单可能需要5秒到几分钟才能运行。在这段时间内,它不应该轮询数据库以进行更多的工作,而是等待当前的工作完成。如何基于Node中的定时数据库轮询执行长时间运行的例程?

我正在考虑使用setTimeout来完成此任务,方法是执行timeout-event中的工作,并在函数结束时设置新的超时值。但我不知道这是否是最好的方式。这些东西有没有“最佳做法”?

回答

0

这是一个好方法!一些代码,也许有帮助:

(function poll() { 
    fetchJob(onJob); 

    function onJob (err, job) { 
     if (err) throw err; 
     if (job) return execute(job, poll); 
     setTimeout(poll, 1000); 
    } 

}()); 
相关问题