JavaScript для детей. Самоучитель по программированию



Pdf көрінісі
бет41/43
Дата20.07.2022
өлшемі6,41 Mb.
#37806
1   ...   35   36   37   38   39   40   41   42   43

Часть II. Продвинутый JavaScript
Отмена действия таймера
После задания отложенного вызова функции с помощью 
setTimeout 
может выясниться, что вызывать эту функцию больше не нужно. 
Представьте, что вы поставили будильник, чтобы он напомнил 
вам о домашнем задании, однако в итоге сделали все заранее 
и теперь хотите отключить будильник. Для отмены действия 
таймера используется функция 
clearTimeout c ID таймера 
(полученным ранее от 
setTimeout) в качестве аргумента
Предположим, вы установили таймер «сделай домашку» следую-
щим образом: 
var
doHomeworkAlarm
=
function
()
{
alert
(
"Эй! Пора делать домашку!"
);
};

var
timeoutId 
=
setTimeout
(doHomeworkAlarm, 60000);
Функция 
doHomeworkAlarm создает диалог alert, напомина-
ющий о домашке. Вызов 
setTimeout(doHomeworkAlarm, 60000) 
сообщает JavaScript, что функцию 
doHomeworkAlarm нужно вызвать 
через 60 000 миллисекунд (то есть 60 секунд). В строке 

мы вызвали 
setTimeout и сохранили ID таймера в новой переменной timeoutID.
Теперь, чтобы отменить действие таймера, достаточно передать его ID 
функции 
clearTimeout, вот так:
clearTimeout
(timeoutId);
Теперь 
setTimeout не будет вызывать функцию doHomeworkAlarm.
Многократный запуск кода и setInterval
Функция 
setInterval похожа на setTimeout, однако она вызывает 
переданную ей функцию повторно через определенные промежутки 
(интервалы) времени. Скажем, если вы хотите с помощью JavaScript 
обновлять показания часов, используйте 
setInterval, чтобы функ-
ция обновления вызывалась раз в секунду. 
SetInterval принимает два 
аргумента: функцию и интервал времени в миллисекундах, как пока-
зано на рис. 10.2.
Do homework 
alarm
— здесь 
будильник 
«сделай 
домашку»
Set interval
— 
задать 
интервал


10. Интерактивное программирование
159
setInterval
(func, interval)
Сколько миллисекунд 
должно пройти между вызовами
Функция, которую нужно вызывать 
каждые interval миллисекунд
Рис. 10.2. Аргументы 
setInterval
Например, так можно раз в секунду выводить в консоль сообщение:

var
counter
=
1;

var
printMessage
=
function
() { 
console
.
log
(
"Ты смотришь в консоль уже "
+
counter 
+
" сек"
);

counter
++
;
};

var
intervalId 
=
setInterval
(printMessage, 1000);
Ты смотришь в консоль уже 1 сек
Ты смотришь в консоль уже 2 сек
Ты смотришь в консоль уже 3 сек
Ты смотришь в консоль уже 4 сек
Ты смотришь в консоль уже 5 сек
Ты смотришь в консоль уже 6 сек

clearInterval(intervalId);
В строке 

мы создали новую переменную 
counter и присвоили ей значение 1. С помощью 
этой переменной мы будем вести учет времени 
(в секундах).
В строке 

мы создали функцию 
printMessage, 
которая выполняет две задачи. Во-первых, она 
печатает сообщение о том, сколько секунд вы уже 
смотрите в консоль. Во-вторых, далее в строке

она увеличивает переменную 
counter.
Затем, в строке 

, мы вызвали 
setInterval, 
передав ей функцию 
printMessage и число 1000, 
что означает «вызывай 
printMessage каждые 
1000 миллисекунд». Так же как 
setTimeout воз-
вращает ID таймера, 
setInterval возвращает ID 
интервала, который мы сохранили в переменной intervalId. Далее 
этот ID можно использовать для отмены периодического вызова функ-
ции 
printMessage — что мы и сделали в строке 

с помощью функции 
clearInterval.
Counter
— 
счетчик
Print 
message
— 
напечатать 
сообщение


160

Достарыңызбен бөлісу:
1   ...   35   36   37   38   39   40   41   42   43




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет