setTimeout(func, timeout)
Сколько миллисекунд ждать
перед запуском функции
Рис. 10.1. Аргументы setTimeout
Следующий пример показывает, как открыть диалог alert через
setTimeout.
var timeUp = function () {
alert("Время вышло!");
};
setTimeout(timeUp, 3000);
1
В строке мы создали функцию timeUp, открывающую диа-
лог alert с сообщением "Время вышло!". В строке мы вызвали
setTimeout с двумя аргументами: функцией, которую нужно запустить
(timeUp), и числом миллисекунд (3000), которые должны пройти перед
ее запуском. По сути, мы говорим: «Подожди три секунды и вызови
timeUp». Сразу после вызова setTimeout(timeUp, 3000) ничего
не произойдет, однако через три секунды сработает функция timeUp,
открыв диалог alert.
Обратите внимание — вызов setTimeout вернул число 1. Это значе-
ние называют идентификатором (ID) таймера, который обозначает этот
конкретный таймер (отложенный вызов функции). Заметим, что возвра-
щаемое setTimeout значение может быть любым числом, ведь это про-
сто идентификатор. Вызовите setTimeout снова, и он вернет другой ID
таймера:
setTimeout(timeUp, 5000);
2
Полученный ID можно передать функции clearTimeout, чтобы Clear timeout —
отменить этот конкретный таймер. Об этом я расскажу ниже.
отменить
задержку
157
Отмена действия таймера
После задания отложенного вызова функции с помощью setTimeout
может выясниться, что вызывать эту функцию больше не нужно.
Представьте, что вы поставили будильник, чтобы он напомнил
вам о домашнем задании, однако в итоге сделали все заранее
и теперь хотите отключить будильник. Для отмены действия
таймера используется функция clearTimeout c ID таймера
(полученным ранее от setTimeout) в качестве аргумента.
Предположим, вы установили таймер «сделай домашку» следую-
щим образом:
Do homework
var doHomeworkAlarm = function () {
alarm — здесь
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, однако она вызывает
Set interval —
переданную ей функцию повторно через определенные промежутки
задать
( интервалы ) времени. Скажем, если вы хотите с помощью JavaScript
интервал
обновлять показания часов, используйте setInterval, чтобы функ-
ция обновления вызывалась раз в секунду. SetInterval принимает два
аргумента: функцию и интервал времени в миллисекундах, как пока-
зано на рис. 10.2.
158 Часть II. Продвинутый JavaScript
Функция, которую нужно вызывать
каждые interval миллисекунд
setInterval(func, interval)
Сколько миллисекунд
должно пройти между вызовами
Рис. 10.2. Аргументы setInterval
Например, так можно раз в секунду выводить в консоль сообщение:
var counter = 1;
Counter —
счетчик
var printMessage = function () {
Print
console.log("Ты смотришь в консоль уже " + counter + " сек");
Читать дальше
Конец ознакомительного отрывка
Купить книгу