Timers Flashcards

1
Q

setTimeout

A

Позволяет вызвать функцию один раз через определённый интервал времени

let timeoutID = window.setTimeout(func, [, delay, param1, param2, …]);

Время delay не гарантировано. Если основной поток call stack занят в момент наступление данного времени, то callback будет выполнен после освобождения call stack.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

setInterval

A

Позволяет вызывать функцию регулярно, повторяя вызов через определённый интервал времени.

let intervalID = scope.setInterval(func, delay[, param1, param2, …]);

Чтобы получить плавную анимацию интервал должен быть 16 миллисекунд (1000мс / 60 кадров в секунду).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

setTimeout with 0 delay

A

Даже если отсрочка установлена на 0, callback не вызовется сразу, а попадет в callback queue и будет ждать там очищения callstack для вызова.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Reference to current time in setTimeout

A

Поскольку на точность исполнения по delay времени полагаться нельзя, то если нам нужно текущее время, то лучше вызвать его в функции отдельно через new Date.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

clearTimeout()

A

setTimeout возвращает «идентификатор таймера» timerId, который можно использовать для отмены дальнейшего выполнения.

let timerId = setTimeout(…);
clearTimeout(timerId);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

clearInterval()

A

Чтобы остановить выполнение функции заданной через setInterval, необходимо вызвать этот метод с соответствующим Id.

let timerId = setInterval(() => alert(‘tick’), 2000);

// остановить вывод через 5 секунд
setTimeout(() => { clearInterval(timerId); alert(‘stop’); }, 5000);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Nested setTimeout()

A

Это отличный от setInterval способ запускать что-то регулярно.

Данный способ более гибкий, т.к. позволяет добавлять доп.условия на последующие запуски.

Пример кода:
let timerId = setTimeout(function tick() {
alert(‘tick’);
timerId = setTimeout(tick, 2000); // (*)
}, 2000);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly