Следующий код является решением проблемы, отправленной автором онлайн-курса, который я прохожу.Цель состоит в том, чтобы постоянно печатать сообщение «Hello World» (вместе с временем задержки) в группах по 5 сообщений, в которых задержка увеличивается на 100 мс для каждой группы.Он опубликовал объяснение этого решения (см. Проблема с таймерами # 4) в статье среднего уровня, но оно больше похоже на подход, чем на объяснение.
Мне удалось успешно использовать рекурсиюв других упражнениях и программах, но, возможно, потому что я никогда не использовал в контексте метода setInterval, я просто не следую, как он работает в этой ситуации.
(потому что это повторяется бесконечно,Я не публикую это как исполняемый фрагмент.)
let lastIntervalId, counter = 5;
const greeting = delay => {
if (counter === 5) {
clearInterval(lastIntervalId);
lastIntervalId = setInterval(() => {
console.log('Hello World. ' + delay);
greeting(delay + 100);
}, delay);
counter = 0;
}
counter += 1;
};
greeting(100);
Я прочитал всю его статью Medium, а также перечитал несколько статей по рекурсии, но я не могу найти ничего, что действительно применимодля этого использования рекурсии в таймере JavaScript.
Мне кажется, что если сообщение журнала повторяется в группах по 5, то рекурсивный вызов greeting(delay + 100)
также будет вызван 5 раз, и что длякаждый из этих случаев будет сделано еще 5 рекурсивных вызовов и т. д. в геометрической прогрессии.
Если бы кто-то мог объяснить мне, шаг за шагом, как этот процессна самом деле, я действительно ценю это.