1 added
1 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Краткая характеристика</a></li>
1
<ul><li><a>Краткая характеристика</a></li>
2
<li><a>TimeOut - это…</a><ul><li><a>Синтаксис</a></li>
2
<li><a>TimeOut - это…</a><ul><li><a>Синтаксис</a></li>
3
<li><a>Передача параметров</a></li>
3
<li><a>Передача параметров</a></li>
4
<li><a>Альтернативное решение</a></li>
4
<li><a>Альтернативное решение</a></li>
5
<li><a>Вероятные трудности</a></li>
5
<li><a>Вероятные трудности</a></li>
6
<li><a>Принудительная this-установка</a></li>
6
<li><a>Принудительная this-установка</a></li>
7
<li><a>Использование библиотек</a></li>
7
<li><a>Использование библиотек</a></li>
8
<li><a>Отмена (отключение) таймера</a></li>
8
<li><a>Отмена (отключение) таймера</a></li>
9
</ul></li>
9
</ul></li>
10
<li><a>SetInterval - второй метод</a></li>
10
<li><a>SetInterval - второй метод</a></li>
11
<li><a>Вложенный setTimeOut</a></li>
11
<li><a>Вложенный setTimeOut</a></li>
12
<li><a>Сборка мусора и callback</a></li>
12
<li><a>Сборка мусора и callback</a></li>
13
<li><a>Нулевая задержка</a></li>
13
<li><a>Нулевая задержка</a></li>
14
<li><a>RequestAnimationFrame()</a></li>
14
<li><a>RequestAnimationFrame()</a></li>
15
</ul><p>Планирование - процесс, который может потребоваться в совершенно разных проектах. Вызов функций в приложениях возможен как сразу, так и через заданный временной интервал. Реализовывать операции "по таймеру" можно<a>при помощи "чистого" JavaScript</a>. Добиться желаемого результата обычно легко.</p>
15
</ul><p>Планирование - процесс, который может потребоваться в совершенно разных проектах. Вызов функций в приложениях возможен как сразу, так и через заданный временной интервал. Реализовывать операции "по таймеру" можно<a>при помощи "чистого" JavaScript</a>. Добиться желаемого результата обычно легко.</p>
16
<p>Далее предстоит научиться работать с таймерами и задержкой. Необходимо изучить функции, связанные с рассматриваемым элементом языка программирования. А еще - ознакомиться с несколькими примерами таймеров и задержки. Эта информация рассчитана на широкую публику. Она подойдет как начинающим веб-программистам, так и уже более опытным их коллегам.</p>
16
<p>Далее предстоит научиться работать с таймерами и задержкой. Необходимо изучить функции, связанные с рассматриваемым элементом языка программирования. А еще - ознакомиться с несколькими примерами таймеров и задержки. Эта информация рассчитана на широкую публику. Она подойдет как начинающим веб-программистам, так и уже более опытным их коллегам.</p>
17
<h2>Краткая характеристика</h2>
17
<h2>Краткая характеристика</h2>
18
<p>За таймеры в the JS отвечают два разных метода:</p>
18
<p>За таймеры в the JS отвечают два разных метода:</p>
19
<ul><li>setTimeout - дает возможность вызвать функцию только один раз через определенный промежуток времени;</li>
19
<ul><li>setTimeout - дает возможность вызвать функцию только один раз через определенный промежуток времени;</li>
20
<li>setInterval - позволяет обращаться к функции регулярно, повторяя вызов через определенный временной интервал.</li>
20
<li>setInterval - позволяет обращаться к функции регулярно, повторяя вызов через определенный временной интервал.</li>
21
</ul><p>Соответствующие методы не являются частью спецификации the JavaScript. Несмотря на это, большинство сред выполнения the JS-кода имеют внутренний планировщик и предоставляют доступ к упомянутым функциям. Они поддерживаются во всех браузерах, а также в Node.js. Далее оба этих метода будут изучены более подробно. Акцент сделан на первом варианте - он встречается чаще.</p>
21
</ul><p>Соответствующие методы не являются частью спецификации the JavaScript. Несмотря на это, большинство сред выполнения the JS-кода имеют внутренний планировщик и предоставляют доступ к упомянутым функциям. Они поддерживаются во всех браузерах, а также в Node.js. Далее оба этих метода будут изучены более подробно. Акцент сделан на первом варианте - он встречается чаще.</p>
22
<h2>TimeOut - это…</h2>
22
<h2>TimeOut - это…</h2>
23
<p>TimeOut - это нативная функция the JavaScript. С ее помощью можно задать задержку (таймер) в том или ином проекте. Время здесь должно указываться в миллисекундах.</p>
23
<p>TimeOut - это нативная функция the JavaScript. С ее помощью можно задать задержку (таймер) в том или ином проекте. Время здесь должно указываться в миллисекундах.</p>
24
<p>The setTimeOut будет полезен в веб-разработке, особенно если необходимо вывести всплывающее окно после того, как пользователь пробыл на веб-портале то или иное время. Также этот метод используется при формировании эффекта от наведения курсора мыши на элемент на экране. The setTimeOut - это функция, которая используется для одноразовой реализации действий через определенный промежуток времени.</p>
24
<p>The setTimeOut будет полезен в веб-разработке, особенно если необходимо вывести всплывающее окно после того, как пользователь пробыл на веб-портале то или иное время. Также этот метод используется при формировании эффекта от наведения курсора мыши на элемент на экране. The setTimeOut - это функция, которая используется для одноразовой реализации действий через определенный промежуток времени.</p>
25
<h3>Синтаксис</h3>
25
<h3>Синтаксис</h3>
26
<p>The setTimeOut представляет собой функцию с определенным синтаксисом. Чтобы ее использовать, нужно в исходном коде написать следующую строку:</p>
26
<p>The setTimeOut представляет собой функцию с определенным синтаксисом. Чтобы ее использовать, нужно в исходном коде написать следующую строку:</p>
27
<p>let timerId = setTimeout (func|code, [delay], [arg1], [arg2],…);</p>
27
<p>let timerId = setTimeout (func|code, [delay], [arg1], [arg2],…);</p>
28
<p>Здесь:</p>
28
<p>Здесь:</p>
29
<ol><li>Func|code - это функция или строка кода, отправляемого на выполнение. Чаще всего соответствующий элемент представляет собой именно определенную команду. Строка кода может быть передана сюда, но это - крайне редкая ситуация.</li>
29
<ol><li>Func|code - это функция или строка кода, отправляемого на выполнение. Чаще всего соответствующий элемент представляет собой именно определенную команду. Строка кода может быть передана сюда, но это - крайне редкая ситуация.</li>
30
<li>Delay - параметр, указывающий на задержку перед запуском. Указывается в миллисекундах (1000 мс = 1 с). Значение по умолчанию установлено на уровне 0.</li>
30
<li>Delay - параметр, указывающий на задержку перед запуском. Указывается в миллисекундах (1000 мс = 1 с). Значение по умолчанию установлено на уровне 0.</li>
31
<li>Arg1, arg2, … - аргументы, передаваемые в заданную функцию.</li>
31
<li>Arg1, arg2, … - аргументы, передаваемые в заданную функцию.</li>
32
</ol><p>The setTimeOut - команда, которая работает элементарно. Это таймер обратного отсчета. Далее предстоит познакомиться со всеми способами использования упомянутой команды.</p>
32
</ol><p>The setTimeOut - команда, которая работает элементарно. Это таймер обратного отсчета. Далее предстоит познакомиться со всеми способами использования упомянутой команды.</p>
33
<h3>Передача параметров</h3>
33
<h3>Передача параметров</h3>
34
<p>Если необходимо задать задержку (паузу) в программе на the JS, требуется запомнить принцип передачи параметров в используемый метод.</p>
34
<p>Если необходимо задать задержку (паузу) в программе на the JS, требуется запомнить принцип передачи параметров в используемый метод.</p>
35
<p>Выше представлен программный код, где необходимо передать параметры в callback-функцию. Она будет работать при помощи the setTimeOut. Нужно выделить случайное приветствие из заданного массива с названием greetings. Теперь оно передается в качестве параметра функции greet. Операция осуществляется с задержкой в 1 секунду.</p>
35
<p>Выше представлен программный код, где необходимо передать параметры в callback-функцию. Она будет работать при помощи the setTimeOut. Нужно выделить случайное приветствие из заданного массива с названием greetings. Теперь оно передается в качестве параметра функции greet. Операция осуществляется с задержкой в 1 секунду.</p>
36
<h3>Альтернативное решение</h3>
36
<h3>Альтернативное решение</h3>
37
<p>Ранее представленный синтаксис подразумевает использование метода, через который допустима передача параметров в callback-функции. В этом случае выводятся все параметры, идущие после задержки.</p>
37
<p>Ранее представленный синтаксис подразумевает использование метода, через который допустима передача параметров в callback-функции. В этом случае выводятся все параметры, идущие после задержки.</p>
38
<p>setTimeout (greet, 1000, randomGreeting);</p>
38
<p>setTimeout (greet, 1000, randomGreeting);</p>
39
<p>Выше - пример того, как это выглядит на практике. Метод не работает в IE 9 и более старых сборках соответствующего браузера. Данная особенность обусловлена тем, что передаваемые параметры выступают в качестве undefined. Проблема может быть решена - для этого разработчик должен обратиться к официальной документации. Начинающим веб-программистам соответствующая информация не нужна.</p>
39
<p>Выше - пример того, как это выглядит на практике. Метод не работает в IE 9 и более старых сборках соответствующего браузера. Данная особенность обусловлена тем, что передаваемые параметры выступают в качестве undefined. Проблема может быть решена - для этого разработчик должен обратиться к официальной документации. Начинающим веб-программистам соответствующая информация не нужна.</p>
40
<h3>Вероятные трудности</h3>
40
<h3>Вероятные трудности</h3>
41
<p>При попытках установить<a>в программном обеспечении</a>один или несколько таймеров можно столкнуться с определенными трудностями. Из-за этого приходится запоминать некоторые правила и особенности разработки на the JS:</p>
41
<p>При попытках установить<a>в программном обеспечении</a>один или несколько таймеров можно столкнуться с определенными трудностями. Из-за этого приходится запоминать некоторые правила и особенности разработки на the JS:</p>
42
<ul><li>код, исполняемый при помощи setTimeOut, запускается отдельно от функции, для которой он был вызван;</li>
42
<ul><li>код, исполняемый при помощи setTimeOut, запускается отдельно от функции, для которой он был вызван;</li>
43
<li>некоторые трудности разработки решаются при помощи ключевого слова this.</li>
43
<li>некоторые трудности разработки решаются при помощи ключевого слова this.</li>
44
</ul><p>Чтобы решать проблемы, связанные с реализацией таймеров, можно пользоваться специальной библиотекой, а также принудительной установкой this. Далее эти два подхода будут рассмотрены более подробно.</p>
44
</ul><p>Чтобы решать проблемы, связанные с реализацией таймеров, можно пользоваться специальной библиотекой, а также принудительной установкой this. Далее эти два подхода будут рассмотрены более подробно.</p>
45
<h3>Принудительная this-установка</h3>
45
<h3>Принудительная this-установка</h3>
46
-
<p>Чтобы команда the setTimeOut работала в исходном коде без ошибок, можно принудительно установить this. Операция доступна при помощи blind(). Это метод, позволяющий в the JavaScript вызвать новую функцию. При обращении к ней в виде значения ключа this присваивается определенный параметр.</p>
46
+
<p>Чтобы команда the setTimeOut работала в исходном коде без ошибок, можно принудительно установить this. Операция доступна при помощи blind(). Это метод, позволяющий в the JavaScript вызвать новую функцию. ��ри обращении к ней в виде значения ключа this присваивается определенный параметр.</p>
47
<p>setTimeOut (person.introduce,blind(person), 50);</p>
47
<p>setTimeOut (person.introduce,blind(person), 50);</p>
48
<p>Здесь в качестве вызываемой команды используется person. Но это только один из вариантов решения проблем, связанных с применением таймеров и задержки в программном коде. Есть еще один - использование библиотеки языка.</p>
48
<p>Здесь в качестве вызываемой команды используется person. Но это только один из вариантов решения проблем, связанных с применением таймеров и задержки в программном коде. Есть еще один - использование библиотеки языка.</p>
49
<h3>Использование библиотек</h3>
49
<h3>Использование библиотек</h3>
50
<p>Проблемы, связанные с таймерами и this могут быть решены за счет вызова встроенных функций. Для этого используются разнообразные библиотеки. Примером может послужить метод jQuery.proxy(). Он берет команду, а затем возвращает новую функцию. В последней всегда должен применяться заранее установленный контекст.</p>
50
<p>Проблемы, связанные с таймерами и this могут быть решены за счет вызова встроенных функций. Для этого используются разнообразные библиотеки. Примером может послужить метод jQuery.proxy(). Он берет команду, а затем возвращает новую функцию. В последней всегда должен применяться заранее установленный контекст.</p>
51
<p>setTimeOut($.proxy(person.introduce, person), 50);</p>
51
<p>setTimeOut($.proxy(person.introduce, person), 50);</p>
52
<p>Выше - образец кода, который демонстрирует использование библиотек для решения проблем, связанных с this и таймерами/задержкой.</p>
52
<p>Выше - образец кода, который демонстрирует использование библиотек для решения проблем, связанных с this и таймерами/задержкой.</p>
53
<h3>Отмена (отключение) таймера</h3>
53
<h3>Отмена (отключение) таймера</h3>
54
<p>The JS - простой, понятный и функциональный<a>язык программирования</a>. Он предусматривает методы и команды, которые пригодятся при создании достаточно сложных проектов. Иногда уже установленный таймер необходимо отключить. Для этого the JS поддерживает отдельный метод (команду) - clearTimeOut.</p>
54
<p>The JS - простой, понятный и функциональный<a>язык программирования</a>. Он предусматривает методы и команды, которые пригодятся при создании достаточно сложных проектов. Иногда уже установленный таймер необходимо отключить. Для этого the JS поддерживает отдельный метод (команду) - clearTimeOut.</p>
55
<p>Вызов setTimeOut возвращает идентификатор таймера (timerId), который можно использовать для отмены дальнейшей реализации. Синтаксическая форма представления кода, применяемого для данной цели имеет следующий вид:</p>
55
<p>Вызов setTimeOut возвращает идентификатор таймера (timerId), который можно использовать для отмены дальнейшей реализации. Синтаксическая форма представления кода, применяемого для данной цели имеет следующий вид:</p>
56
<p>let timerId = setTimeout(…);</p>
56
<p>let timerId = setTimeout(…);</p>
57
<p>clearTimeout(timerId);</p>
57
<p>clearTimeout(timerId);</p>
58
<p>А вот наглядный пример реализации этой команды:</p>
58
<p>А вот наглядный пример реализации этой команды:</p>
59
<p>В браузере идентификатором таймера выступает целое число. В других средах ими могут выступать иные компоненты. Пример - Node.js. Он вернет объект таймера с дополнительными методами.</p>
59
<p>В браузере идентификатором таймера выступает целое число. В других средах ими могут выступать иные компоненты. Пример - Node.js. Он вернет объект таймера с дополнительными методами.</p>
60
<p>Если использовать в программном коде метод stop, он остановит таймер. Полученные результаты будут сброшены. Отсчет времени начнется с самого начала.</p>
60
<p>Если использовать в программном коде метод stop, он остановит таймер. Полученные результаты будут сброшены. Отсчет времени начнется с самого начала.</p>
61
<h2>SetInterval - второй метод</h2>
61
<h2>SetInterval - второй метод</h2>
62
<p>Чтобы реализовать задержку в программном коде the JS, можно использовать еще один метод. А именно - setInterval. Его синтаксическая форма будет точно такой же, как и в случае с the setTimeOut.</p>
62
<p>Чтобы реализовать задержку в программном коде the JS, можно использовать еще один метод. А именно - setInterval. Его синтаксическая форма будет точно такой же, как и в случае с the setTimeOut.</p>
63
<p>Аргументы здесь предусматривают точно такое же значение. Отличие от the setTimeOut заключается в том, что команда запускается не один раз, а периодически с интервалом в указанное время.</p>
63
<p>Аргументы здесь предусматривают точно такое же значение. Отличие от the setTimeOut заключается в том, что команда запускается не один раз, а периодически с интервалом в указанное время.</p>
64
<p>Чтобы остановить дальнейшую реализацию команды, требуется обращение к clearInterval(timerId). Вот пример, который поможет вывести сообщение на экран с интервалом 2 секунды. Через 5 секунд эта операция будет прекращена:</p>
64
<p>Чтобы остановить дальнейшую реализацию команды, требуется обращение к clearInterval(timerId). Вот пример, который поможет вывести сообщение на экран с интервалом 2 секунды. Через 5 секунд эта операция будет прекращена:</p>
65
<p>У большинства браузеров, включая the Chrome и Mozilla FireFox внутренний счетчик продолжает работать во время показа alert/confirm/prompt.</p>
65
<p>У большинства браузеров, включая the Chrome и Mozilla FireFox внутренний счетчик продолжает работать во время показа alert/confirm/prompt.</p>
66
<p>При запуске предложенного выше фрагмента кода и ожидании с закрытием alert несколько секунд, следующий alert будет показан сразу после закрытия предыдущего. Интервал времени между alert-сообщениями окажется менее 2-х секунд.</p>
66
<p>При запуске предложенного выше фрагмента кода и ожидании с закрытием alert несколько секунд, следующий alert будет показан сразу после закрытия предыдущего. Интервал времени между alert-сообщениями окажется менее 2-х секунд.</p>
67
<h2>Вложенный setTimeOut</h2>
67
<h2>Вложенный setTimeOut</h2>
68
<p>Регулярный запуск чего-либо в программном коде допускается несколькими методами. Первый - это использование the setInterval. Второй - применение так называемого вложенного setTimeOut. Вот наглядный пример реализации этой идеи:</p>
68
<p>Регулярный запуск чего-либо в программном коде допускается несколькими методами. Первый - это использование the setInterval. Второй - применение так называемого вложенного setTimeOut. Вот наглядный пример реализации этой идеи:</p>
69
<p>Метод the setTimeOut в предложенном фрагменте планирует следующий вызов прямо после окончания текущего (*). Вложенный the setTimeOut - это более гибкий метод, чем the setInterval. С его помощью допустимо задание поведения таймера в зависимости от предыдущих результатов.</p>
69
<p>Метод the setTimeOut в предложенном фрагменте планирует следующий вызов прямо после окончания текущего (*). Вложенный the setTimeOut - это более гибкий метод, чем the setInterval. С его помощью допустимо задание поведения таймера в зависимости от предыдущих результатов.</p>
70
<p>Пример - нужно написать сервис, который будет отправлять запросы для получения данных на сервер с интервалом каждые 5 секунд. Если же серверная сторона перегружена, временной промежуток увеличивается до 10, 20, 40 секунд. Вот как это будет выглядеть в программном коде:</p>
70
<p>Пример - нужно написать сервис, который будет отправлять запросы для получения данных на сервер с интервалом каждые 5 секунд. Если же серверная сторона перегружена, временной промежуток увеличивается до 10, 20, 40 секунд. Вот как это будет выглядеть в программном коде:</p>
71
<p>Если же команды, которые планируется использовать, являются ресурсоемкими и требующими времени, можно изменить время, затраченное на выполнение, а также спланировать следующий вызов раньше или позже.</p>
71
<p>Если же команды, которые планируется использовать, являются ресурсоемкими и требующими времени, можно изменить время, затраченное на выполнение, а также спланировать следующий вызов раньше или позже.</p>
72
<p>Вложенный the setTimeOut дает возможность задать задержку между выполнениями команд более точно, чем the setInterval. Вот два фрагмента кода, которые объяснят разницу между упомянутыми методами. Первый использует the setInterval, а второй - the setTimeOut:</p>
72
<p>Вложенный the setTimeOut дает возможность задать задержку между выполнениями команд более точно, чем the setInterval. Вот два фрагмента кода, которые объяснят разницу между упомянутыми методами. Первый использует the setInterval, а второй - the setTimeOut:</p>
73
<p>Для the setInterval внутренний планировщик будет выполнять func(i) с интервалом 100 мс:</p>
73
<p>Для the setInterval внутренний планировщик будет выполнять func(i) с интервалом 100 мс:</p>
74
<p>Реальная задержка между вызовами func при помощи the setInterval меньше, чем указано в программном коде. Соответствующее явление - вариант нормы. Это связано с тем, что время, затраченное на выполнение func, использует часть заданного временного интервала. Реализация func может оказаться более долгой и отнять больше 100 мс.</p>
74
<p>Реальная задержка между вызовами func при помощи the setInterval меньше, чем указано в программном коде. Соответствующее явление - вариант нормы. Это связано с тем, что время, затраченное на выполнение func, использует часть заданного временного интервала. Реализация func может оказаться более долгой и отнять больше 100 мс.</p>
75
<p>В описанном случае движок будет:</p>
75
<p>В описанном случае движок будет:</p>
76
<ol><li>Ждать окончания выполнения func.</li>
76
<ol><li>Ждать окончания выполнения func.</li>
77
<li>Проверять после реализации func планировщик.</li>
77
<li>Проверять после реализации func планировщик.</li>
78
<li>Немедленно запускать реализацию снова, если время подошло к концу.</li>
78
<li>Немедленно запускать реализацию снова, если время подошло к концу.</li>
79
<li>В противном случае (когда команда всегда выполняется дольше задержки delay) вызовы будут реализовываться без каких-либо задержек.</li>
79
<li>В противном случае (когда команда всегда выполняется дольше задержки delay) вызовы будут реализовываться без каких-либо задержек.</li>
80
</ol><p>Ниже можно увидеть изображение, демонстрирующее работу рекурсивного (вложенного) the SetTimeOut:</p>
80
</ol><p>Ниже можно увидеть изображение, демонстрирующее работу рекурсивного (вложенного) the SetTimeOut:</p>
81
<p>Вложенный метод таймера the SetTimeOut гарантирует фиксированную задержку. В рассматриваемом примере она составляет 100 мс. Такой результат достигается за счет того, что новый вызов планируется в конце предыдущего.</p>
81
<p>Вложенный метод таймера the SetTimeOut гарантирует фиксированную задержку. В рассматриваемом примере она составляет 100 мс. Такой результат достигается за счет того, что новый вызов планируется в конце предыдущего.</p>
82
<h2>Сборка мусора и callback</h2>
82
<h2>Сборка мусора и callback</h2>
83
<p>При передаче функции в setInterval или setTimeOut, на нее создается внутренняя ссылка. Она сохраняется в имеющемся планировщике (таймере). Данный подход позволит избежать попадания команды в сборщик мусора, даже если на нее отсутствуют другие ссылки.</p>
83
<p>При передаче функции в setInterval или setTimeOut, на нее создается внутренняя ссылка. Она сохраняется в имеющемся планировщике (таймере). Данный подход позволит избежать попадания команды в сборщик мусора, даже если на нее отсутствуют другие ссылки.</p>
84
<p>Здесь для the setInterval в таймере функция останется в памяти до непосредственного обращения к clearInterval.</p>
84
<p>Здесь для the setInterval в таймере функция останется в памяти до непосредственного обращения к clearInterval.</p>
85
<p>При работе с таймерами необходимо также помнить о так называемом "побочном эффекте". Функция ссылается на внешнее лексическое окружение. Это приводит к тому, что пока она существует, внешние переменные тоже присутствуют. Они могут отнимать больше памяти, чем сама задействованная функция. Из-за этой особенности лучше отменять регулярный вызов той или иной команды, если в нем нет необходимости. Соответствующий принцип применим не только к крупным операциям, но и к самым маленьким функциям.</p>
85
<p>При работе с таймерами необходимо также помнить о так называемом "побочном эффекте". Функция ссылается на внешнее лексическое окружение. Это приводит к тому, что пока она существует, внешние переменные тоже присутствуют. Они могут отнимать больше памяти, чем сама задействованная функция. Из-за этой особенности лучше отменять регулярный вызов той или иной команды, если в нем нет необходимости. Соответствующий принцип применим не только к крупным операциям, но и к самым маленьким функциям.</p>
86
<h2>Нулевая задержка</h2>
86
<h2>Нулевая задержка</h2>
87
<p>Еще один момент, который необходимо запомнить при работе с таймерами - это особый вариант использования метода the setTimeOut. Речь идет о так называемой нулевой задержке.</p>
87
<p>Еще один момент, который необходимо запомнить при работе с таймерами - это особый вариант использования метода the setTimeOut. Речь идет о так называемой нулевой задержке.</p>
88
<p>С ее помощью можно запланировать вызов func так быстро, как это возможно. Планировщик будет обращаться к соответствующей команде только после завершения выполнения текущего фрагмента исходного кода. С помощью этого приема удается запланировать вызов функции сразу после выполнения текущего кода. Вот наглядный пример реализации затеи:</p>
88
<p>С ее помощью можно запланировать вызов func так быстро, как это возможно. Планировщик будет обращаться к соответствующей команде только после завершения выполнения текущего фрагмента исходного кода. С помощью этого приема удается запланировать вызов функции сразу после выполнения текущего кода. Вот наглядный пример реализации затеи:</p>
89
<p>Первая строка в заданном таймере помещает вызов в "календарь" через 0 мс. Планировщик все равно проверит этот самый "календарь" после завершения текущего программного кода. Все это приводит к тому, что "Привет" будет выведено на экран первым, а "Мир" - вторым.</p>
89
<p>Первая строка в заданном таймере помещает вызов в "календарь" через 0 мс. Планировщик все равно проверит этот самый "календарь" после завершения текущего программного кода. Все это приводит к тому, что "Привет" будет выведено на экран первым, а "Мир" - вторым.</p>
90
<h2>RequestAnimationFrame()</h2>
90
<h2>RequestAnimationFrame()</h2>
91
<p>В процессе изучения таймеров рекомендуется обратить внимание на еще один метод. Речь идет о the requestAnimationFrame. Этот метод таймера работает точно так же, как и the setInterval, но за исключением области применения. Соответствующий вариант больше заточен под анимацию, а также работу с графикой.</p>
91
<p>В процессе изучения таймеров рекомендуется обратить внимание на еще один метод. Речь идет о the requestAnimationFrame. Этот метод таймера работает точно так же, как и the setInterval, но за исключением области применения. Соответствующий вариант больше заточен под анимацию, а также работу с графикой.</p>
92
<p>The requestAnimationFrame предусматривает ряд оптимизаций, позволяющих добиться лучшей производительности. В примере с таймером выше window.requestAnimationFrame() получает функцию, которая вызывается определенное количество раз (обычно - 60) в секунду. В соответствующий метод передается команда moveRect. Она используется для изменения угла поворота блока на веб-сайте. Далее предстоит снова обратиться к методу window.requestAnimationFrame(). Возвращаемым результатом станет уникальный id. Он может использоваться в будущем в таймере для остановки анимации:</p>
92
<p>The requestAnimationFrame предусматривает ряд оптимизаций, позволяющих добиться лучшей производительности. В примере с таймером выше window.requestAnimationFrame() получает функцию, которая вызывается определенное количество раз (обычно - 60) в секунду. В соответствующий метод передается команда moveRect. Она используется для изменения угла поворота блока на веб-сайте. Далее предстоит снова обратиться к методу window.requestAnimationFrame(). Возвращаемым результатом станет уникальный id. Он может использоваться в будущем в таймере для остановки анимации:</p>
93
<p>Теперь понятно, как сделать таймер в JavaScript в том или ином случае. Лучше изучить эту тему помогут специальные дистанционные компьютерные курсы. В срок от нескольких месяцев до года пользователя научат писать программы на любом языке, включая JS. В конце будет выдан электронный сертификат, подтверждающий приобретенные навыки и знания.</p>
93
<p>Теперь понятно, как сделать таймер в JavaScript в том или ином случае. Лучше изучить эту тему помогут специальные дистанционные компьютерные курсы. В срок от нескольких месяцев до года пользователя научат писать программы на любом языке, включая JS. В конце будет выдан электронный сертификат, подтверждающий приобретенные навыки и знания.</p>
94
<p><em>Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в <a>Otus</a>!</em> </p>
94
<p><em>Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в <a>Otus</a>!</em> </p>
95
95