Функції settimeout і setinterval

setTimeout і setInterval

Обидві функції першим аргументом приймають рядок коду, яку необхідно виконати, або функцію, яку необхідно запустити. Другий аргумент задає затримку в мілісекундах. Повертають обидві функції ідентифікатор створеного таймера.

Зверніть увагу, що рядок коду - це саме рядок, укладена в лапки, а не просто код. Втім передавати рядок не рекомендується. Вона виконується в глобальному контексті, а скрипти, як правило, знаходяться в який-небудь локальної області, в результаті рядок коду, що передається в setTimeout / setInterval не має доступу до даних і функцій скрипта. Та й незручно це - писати код всередині рядка, він навіть не підсвічується.

Дія функцій setTimeout і setInterval можна скасувати функціями clearTimeout і clearInterval відповідно, передаючи останнім ідентифікатор, що відключається таймера.

Простий приклад: при наведенні мишкою на елемент необхідно через дві секунди показати повідомлення. Однак якщо протягом цих двох секунд покажчик миші був прибраний з елемента, то повідомлення показувати не потрібно.

Якщо в clearTimeout / clearInterval переданий недійсний ідентифікатор, то нічого не станеться. Тому в прикладі вище можна не перевіряти, відпрацював чи вже таймер, і що взагалі лежить в timerId.

Замість цього функції setTimeout / setInterval "роблять позначку", що необхідно запустити якийсь код через стільки-то мілісекунд, а скрипт продовжує працювати своєю чергою.

З того, що мова однопотоковий слід ще один наслідок - код виконані не через строго заданий проміжок часу, а не раніше, ніж через цей проміжок. Якщо в потрібний момент часу буде виконуватися якийсь код, то інтерпретатор дочекається його закінчення, після чого тільки запустить код за таймером.

У Firefox функції setTimeout і setInterval передають своїм callback-функцій один числовий параметр, що дорівнює кількості мілісекунд, на які запізнився виклик функції.

На жаль, в інших браузерах даного функціоналу немає.

Схожі статті