Знакомства на Just click it
Скоро новый год!
Онлайн радио
Вверх
Новые статьи

Архив

Метод window.clearTimeout.

В прошлом уроке мы научились порождать потоки вычислений при помощи метода window.setTimeout(). Там мы разобрали пример, в котором время выводилось при помощи данного метода. Но, даже когда мы останавливали вывод времени на экран, внутренний счетчик продолжал идти. Сегодня мы научимся его останавливать при помощи метода window.clearTimeout.

window.clearTimeout - обнуление внутреннего счетчика.

Для прерывания потока вычислений, созданного методом window.SetTimeout используется window.ClearTimeout. Смысл этого метода может показаться вам несколько непонятным, но давайте вернемся к предыдущему примеру.

Если вы помните, то в прошлом уроке мы выводили на экран текущее время при помощи функции date(). Функция date() позволяет узнать время только в один единственный момент времени – в момент вызова самой функции, но нам требовалось чтобы время шло, как это и должно быть.

Для этого мы использовали метод window.settimeout, позволяющий нам многократно производить вызов функции date().

И все вроде бы нормально, но у нашей программы был один очень существенный нюанс. Когда мы нажимали на кнопку старт/стоп для остановки часов, мы всего навсего отменяли вывод времени на экран, но сами часы не останавливались. Потоки продолжали порождаться с задержкой в 500 мс, как это было бы, если бы мы и не нажимали на кнопку старт/стоп.

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

 

Теперь вы поняли необходимость использования метода window.clearTimeout. Перейдем к примеру:

 

<script>
var p1 = null;
function start()
{
d = new Date();
window.document.c1.f1.value = d.getHours()+":"+d.getMinutes()+
":"+d.getSeconds();
p1=setTimeout("start();",500);
}
function stop()
{
clearTimeout(p1);
p1=null;
}
</script> <FORM NAME=c1>
Настоящее время:
<INPUT NAME=f1 size=8>
<INPUT TYPE=button VALUE="Start" onClick="if(p1==null)start();">
<INPUT TYPE=button VALUE="Stop" onClick="if(p1!=null)stop();">
</FORM>
Настоящее время:

 

Созданная нами в этом примере программа является более грамотной, с точки зрения програмирования на JavaScript, модификацией программы из предыдущего урока.

 

У нас есть две функции. Первая функция – start() – вызывает текущее время и заставляет его обновляться раз в 500 мс посредством метода window.settimeout. Вторая функция – stop() – уничтожает порождение потоков строкой clearTimeout(p1); и присваивает переменной, содержащей поток вычисления (p1) значение null (не существует).

 

Помимо внедрения метода window.clearTimeout, управление программой тоже было существенно доработанно:


При нажатии на кнопку старт происходит проверка условием if существует ли поток вычислений в данный момент времени и если его нет, то запускает функцию start().

При нажатии на кнопку стоп проверяется отсутствие потока вычислений и если он существует, то вызывается функция stop().

 

Такая доработка функционала позволяет нам исключить появление нескольких одинаковых потоков вычислений в один момент времени.

 

 

назад
далее
Наверх
Источник: Создание сайтов
Мы В Контакте Мы на Facebook Лента новостей RSS
Копирование и публикация материалов сайта разрешены только при наличии активной ссылки на источник
2011 - наши дни.. © Контакты | Лого | Реклама на сайте | Вебмастерам
Политика конфиденциальности | Пользовательское соглашение