Javascript 如何基于节点中的定时数据库轮询执行长时间运行的例程?

Javascript 如何基于节点中的定时数据库轮询执行长时间运行的例程?,javascript,node.js,timer,queue,Javascript,Node.js,Timer,Queue,我有一个例程轮询数据库以查找工作,如果它在那里找到工作,它应该执行它。它一次只能执行1(一)个工单,运行此工单可能需要5秒到几分钟的时间。在此期间,它不应轮询数据库以获取更多工作,而应等待当前工作完成 我正在考虑使用setTimeout来完成这项工作,方法是在timeout事件中完成工作,并在函数末尾设置一个新的超时。但我不知道这是否是最好的方法。这些东西有“最佳实践”吗?这是一个好方法!一些代码,可能会有帮助: (function poll () { fetchJob(onJob);

我有一个例程轮询数据库以查找工作,如果它在那里找到工作,它应该执行它。它一次只能执行1(一)个工单,运行此工单可能需要5秒到几分钟的时间。在此期间,它不应轮询数据库以获取更多工作,而应等待当前工作完成


我正在考虑使用
setTimeout
来完成这项工作,方法是在timeout事件中完成工作,并在函数末尾设置一个新的超时。但我不知道这是否是最好的方法。这些东西有“最佳实践”吗?

这是一个好方法!一些代码,可能会有帮助:

(function poll () {
    fetchJob(onJob);

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

}());