JavaScript Timing Events: setTimeout и setInterval

Програмистите използват времеви събития, за да забавят изпълнението на определен код или да повторят кода на определен интервал.

В библиотеката на JavaScript има две основни функции, използвани за изпълнение на тези задачи: setTimeout()и setInterval().

setTimeout

setTimeout() се използва за забавяне на изпълнението на предадената функция с определен период от време.

Има два параметъра, към които преминавате setTimeout(): функцията, която искате да извикате, и времето в милисекунди за забавяне на изпълнението на функцията.

Не забравяйте, че има 1000 милисекунди (ms) за 1 секунда, така че 5000 ms е равно на 5 секунди.

setTimeout() ще изпълни функцията от първия аргумент веднъж след изтичане на определеното време.

Пример:

let timeoutID; function delayTimer() { timeoutID = setTimeout(delayedFunction, 3000); } function delayedFunction() { alert(“Three seconds have elapsed.”); }

Когато delayTimerфункцията бъде извикана, тя ще се изпълни setTimeout. След изтичане на 3 секунди (3000 ms) той ще се изпълни, delayedFunctionкоето ще изпрати сигнал.

setInterval

Използвайте, за setInterval()да зададете функция, която да се повтаря със закъснение между изпълнението.

Отново се предават два параметъра setInterval(): функцията, която искате да извикате, и времето в милисекунди за забавяне на всяко повикване на функцията.

setInterval() ще продължи да се изпълнява, докато не бъде изчистен.

Пример:

let intervalID; function repeatEverySecond() { intervalID = setInterval(sendMessage, 1000); } function sendMessage() { console.log(“One second elapsed.”); }

Когато вашият код извика функцията, repeatEverySecondтя ще се изпълни setInterval. setIntervalще стартира функцията sendMessageвсяка секунда (1000 ms).

clearTimeout и clearInterval

Съществуват и съответни родни функции за спиране на събитията за синхронизация: clearTimeout()и clearInterval().

Може би сте забелязали, че всяка функция на таймера по-горе се записва в променлива. Когато функцията setTimeoutили се setIntervalизпълнява, на нея се присвоява номер, който се записва в тази променлива. Имайте предвид, че JavaScript прави всичко това във фонов режим.

Този генериран номер е уникален за всеки екземпляр от таймери. Този присвоен номер е и начинът за идентифициране на таймерите, когато искате да ги спрете. Поради тази причина винаги трябва да настройвате таймера си на променлива.

За яснота на вашия код, винаги трябва да съответствате clearTimeout()на setTimeout()и clearInterval()на setInterval().

За да спрете таймер, извикайте съответната функция за изчистване и му предайте променливата на идентификатора на таймера, която съответства на таймера, който искате да спрете. Синтаксисът за clearInterval()и clearTimeout()са еднакви.

Пример:

let timeoutID; function delayTimer() { timeoutID = setTimeout(delayedFunction, 3000); } function delayedFunction() { alert(“Three seconds have elapsed.”); } function clearAlert() { clearTimeout(timeoutID); }