HTML Diff
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