Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие по Java Script 1.doc
Скачиваний:
131
Добавлен:
12.02.2015
Размер:
1.44 Mб
Скачать

Таймеры

Вы можете периодически, через заданный интервал времени, запускать код, например, функцию JavaScript. При этом создается эффект одновременного, параллельного выполнения вычислительных процессов. Иногда требуется организовать временную задержку перед выполнением какой-то функции, чтобы ранее начатый процесс успел завершиться. Все это относится к задачам управления вычислительными процессами во времени.

Для организации постоянного периодического (через заданный интервал времени) выполнения некоторого выражения или функции служит метод setInterval() объекта Window. Этот метод имеет следующий синтаксис:

setInterval(выражение, период [, язык])

Первый параметр представляет собой строку, содержащую выражение (в частности, вызов функции). Второй параметр — целое число, указывающее временную задержку в миллисекундах перед последующими выполнениями выражения, указанного в первом параметре. Третий, необязательный параметр указывает язык, на котором написано выражение; по умолчанию — JavaScript. Метод setInterval() возвращает некоторое целое число — идентификатор временного интервала, который может быть использован в дальнейшем для прекращения выполнения процесса, запущенного с помощью данного метода (см. ниже метод clearInterval()).

Пусть, например, требуется, чтобы некоторая функция myfunc() выполнялась периодически через 0,5 с. Тогда в сценарии следует записать следующее выражение:

setInterval("myfunc()", 500)

Тот факт, что первый параметр метода setInterval() является строкой, обусловливает некоторые особенности передачи параметров периодически вызываемой функции. Если периодически вызываемая функция принимает параметры, то мы должны сначала сформировать строку, содержащую имя этой функции, круглые скобки, значения параметров и запятые между ними, а затем передать ее в качестве первого параметра методу setInterval(). В следующем примере показано, как передать методу setInterval() функцию с двумя параметрами, param1 и param2, значения которых определены в другом месте сценария:

var xstr = "myfunc(" + paraml + "," + param2 + " ) ";

setInterval(xstr, 500);

Выражение, переданное методу setInterval(), будет периодически выполняться сколь угодно долго. Если это выражение осуществляет, например, приращение координат какого-нибудь видимого элемента документа, то этот элемент будет перемещаться в окне браузера.

Для остановки запущенного временного процесса служит метод clearInterval(идентификатор), который принимает в качестве параметра целочисленный идентификатор, возвращаемый соответствующим методом setInterval(), например:

var myproc = setInterval("myfunc(), 100")

If (confirm("Прервать процесс ?"))

clearInterval (myproc)

Чтобы выполнить выражение с некоторой временной задержкой, используется метод setTimeout(). Этот метод объекта Window имеет следующий синтаксис:

setTimeout(выражение, задержка [, язык])

Первый параметр представляет собой строку, содержащую выражение (в частности, вызов функции). Второй параметр — целое число, указывающее временную задержку в миллисекундах выполнения выражения, указанного в первом параметре. Третий, необязательный параметр указывает язык, на котором написано выражение; по умолчанию — JavaScript. Метод setTimeout() возвращает некоторое целое число — идентификатор временного интервала, который может быть использован в дальнейшем для отмены задержки выполнения процесса, запущенного с помощью данного метода (см. ниже метод clearTimeout()).

Пусть, например, требуется, чтобы некоторая функция myfunc() выполнялась спустя 1 с. Тогда в сценарии следует записать следующее выражение:

setTimeout("myfunc()",1000)

Помните, что это выражение не задерживает выполнение всех последующих выражений сценария. Оно лишь задерживает выполнение функции myfunc().

Для отмены задержки процесса, запущенного с помощью метода setTimeout(), используется метод clearTimeout(идентификатор), который принимает в качестве параметра целочисленный идентификатор, возвращаемый соответствующим методом setTimeout().

В следующем HTML-документе имеются две кнопки. Щелчок на кнопке Пуск открывает через 5 с новое окно и загружает в него документ mypage.htm. Однако это действие можно отменить с помощью кнопки Отмена, если щелкнуть на ней, пока окно еще не открыто:

<html>

<button id="start">Пуск</ button >

<button id="stop">Oтмена</ button >

<script>

var myproc;

function start.onclick(){

myproc = setTimeout("Window.open('mypage.htm')", 5000);

}

function stop.onclick(){

clearTimeout(myproc)

</script>

</html>