setTimeout помогите разобраться
всем привет! объясните, как это так получается, что после того, как timerId был присвоен метод с функцией, вызывающей модальное окно, в этой же функции снова вызывается функция timerId?
let timerId = setTimeout(function tick() {
alert('tick');
timerId = setTimeout(tick, 2000); //
}, 2000);
Ответы (2 шт):
Автор решения: Igor
→ Ссылка
Возможно, так это легче понять:
function tick() {
console.log('tick', timerId);
timerId = setTimeout(tick, 2000);
}
let timerId = setTimeout(tick, 2000);
Еще проще, так как timerId не используется:
function tick() {
console.log('tick');
setTimeout(tick, 2000);
}
setTimeout(tick, 2000);
Автор решения: Даниил Бирюков
→ Ссылка
Я бы не советовал использовать setTimeOut() в рекурсии, из-за риска переполнения стека вызовов.
В случаях, когда необходимо вызывать некоторую функцию интервально по времени в JS существует специальный метод setInterval(handler, time).
Данный код можно переписать на:
let timerId = setInterval(function() {
alert('tick');
}, 2000);
При необходимости, можно остановить интервал:
clearInterval(timerId);