ФункцияscheduleUpdatesInRedis() назначает обновления. Для этого, она вызывает функцию performScheduledUpdateOfDataInRedis(), рекурсивно вызывающую себя спустя время, расчитываемое функцией getTimeLeftBeforeUpdate().
Если я понимаю правильно, я в качестве первого параметра setTimeout() передаю именно анонимную функцию, а не результат ее выполнения, следовательно, задержка быть должна, так как в стандартном потоке вывода значения getTimeLeftBeforeUpdate() всегда большие.
Исходные коды функций:
scheduleRanksUpdates : () => {
console.info(`Updates of ranks in redis have been scheduled`);
setTimeout(() => {
return performScheduledRanksUpdatesInRedis(); // It will be called infinitely unless interrupted
}, getTimeLeftBeforeUpdate());
}
И
function performScheduledUpdateOfDataInRedis(index, url, fn = null) {
//updateDataInRedis(index, url, fn);
console.info(getTimeLeftBeforeUpdate());
setTimeout(function () {
return performScheduledUpdateOfDataInRedis(index, url, fn);
}, getTimeLeftBeforeUpdate());
}
Вывод:
performScheduledUpdateOfDataInRedis(index, url, fn); 31518656000 31518656000 31518656000 31518656000 31518656000 31518656000 31518655000 31518655000 31518655000 31518655000 31518655000 31518655000 31518655000 31518655000 31518655000 31518655000 31518655000
В посте до редакции был приведен исходный код другой функции. Исходный код scheduleUpdatesInRedis():
scheduleUpdatesInRedis : (index, url, fn = null) => {
console.info(`Updates of ${index} [${url}] in redis have been scheduled`);
setTimeout(() => {
console.info('performScheduledUpdateOfDataInRedis(index, url, fn);');
return performScheduledUpdateOfDataInRedis(index, url, fn); // It will be called infinitely unless interrupted
}, getTimeLeftBeforeUpdate());
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости