Вот как вы должны поступить, если вам нужно было управлять некоторыми асинхронными задачами:
(function schedule() {
background.asyncStuff().then(function() {
console.log('Process finished, waiting 5 minutes');
setTimeout(function() {
console.log('Going to restart');
schedule();
}, 1000 * 60 * 5);
}).catch(err => console.error('error in scheduler', err));
})();
Однако вы не можете гарантировать, когда оно запустится, но, по крайней мере, вы не будете запускать несколько раз одно и то же задание одновременно.время, если для выполнения вашей работы требуется более 5 минут.
Вы все еще можете использовать setInterval
для планирования асинхронной работы, но если вы это сделаете, вы должны как минимум пометить обработанные задачи как «обрабатываемые».", так что если задание будет запланировано во второй раз до завершения предыдущего, ваша логика может решить не обрабатывать задачи, которые еще обрабатываются.