20 лютого 2025 р.

Планування: setTimeout та setInterval

Ми можемо вирішити виконати функцію не зараз, а через певний час пізніше. Це називається “планування виклику”.

Для цього існує два методи:

  • setTimeout дозволяє нам запускати функцію один раз через певний інтервал часу.
  • setInterval дозволяє нам запускати функцію багаторазово, починаючи через певний інтервал часу, а потім постійно повторюючи у цьому інтервалі.

Ці методи не є частиною специфікації JavaScript. Але більшість середовищ виконання JS-коду мають внутрішній планувальник і надають ці методи. Зокрема, вони підтримуються у всіх браузерах та Node.js.

setTimeout

Синтаксис:

let timerId = setTimeout(func|code, [delay], [arg1], [arg2], ...)

Параметри:

func|code
Функція або рядок з текстом коду для виконання. Зазвичай це функція. З історичних причин можна передати рядок з текстом коду, але це не рекомендується.
delay
Затримка перед запуском, у мілісекундах (1000 мс = 1 секунда), типове значення – 0.
arg1, arg2
Аргументи, які передаються у функцію

Наприклад, цей код викликає sayHi() через одну секунду:

function sayHi() {
  alert('Привіт');
}

setTimeout(sayHi, 1000);

З аргументами:

function sayHi(phrase, who) {
  alert( phrase + ', ' + who );
}

setTimeout(sayHi, 1000, "Привіт", "Джон"); // Привіт, Джон

Якщо перший аргумент – це рядок, то JavaScript створює з нього функцію.

Отже, це також буде працювати:

setTimeout("alert('Привіт')", 1000);

Але використання рядків не рекомендується, використовуйте замість них стрілкові функції, наприклад:

setTimeout(() => alert('Привіт'), 1000);