Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Топ:
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
Марксистская теория происхождения государства: По мнению Маркса и Энгельса, в основе развития общества, происходящих в нем изменений лежит...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Интересное:
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Дисциплины:
2017-06-29 | 235 |
5.00
из
|
Заказать работу |
|
|
Таймер позволяет задавать вызов функции через заданный период времени. В частности, эта возможность поддерживается в браузерах и в сервере Node.JS.
SetTimeout
Синтаксис:
var timerId = setTimeout(func, delay[, arg1, arg2...])
Параметры:
func - функция для исполнения
delay - задержка в миллисекундах
arg1, arg2… - аргументы, которые нужно передать функции
Исполнение функции произойдёт спустя время, указанное в параметре delay.
Например, следующий код вызовет func() через одну секунду:
function func() {
alert('Привет');
}
setTimeout(func, 1000);
С передачей аргументов:
function func(phrase, who) {
alert(phrase + ', ' + who);
}
setTimeout(func, 1000, "Привет", "Вася"); // Привет, Вася
Отмена исполнения clearTimeout
Функция setTimeout возвращает числовой идентификатор таймера timerId, который можно использовать для отмены действия.
Синтаксис:
var timerId = setTimeout(...);
clearTimeout(timerId);
SetInterval
Метод setInterval имеет синтаксис, аналогичный setTimeout:
var timerId = setInterval(func, delay[, arg1, arg2...])
Смысл аргументов – тот же самый. Но, в отличие от setTimeout, он запускает выполнение функции не один раз, а регулярно повторяет её через указанный интервал времени. Остановить исполнение можно вызовом clearInterval(timerId).
Следующий пример при запуске станет выводить сообщение каждые две секунды, пока не пройдёт 5 секунд:
// начать повторы с интервалом 2 сек
var timerId = setInterval(function() {
alert("тик");
}, 2000);
// через 5 сек остановить повторы
setTimeout(function() {
clearInterval(timerId);
alert('стоп');
}, 5000);
var requestID = window.requestAnimationFrame(callback);
— вызвать функцию callback перед следующей перерисовкой браузером содержимого окна. Частота обновления обычно соответствует частоте обновления экрана. Функция callback может принимать один аргумент timestamp, соответствующий времени вызова функции, в милисекундах. Возвращает числовой идентификатор данного запроса кадра.
|
window.cancelAnimationFrame(requestID);
— прервать запрос следующего кадра перерисовки с заданным requestID.
Цикл событий, принципы работы асинхронности.
Event Loop
В JavaScript имеется только один поток выполнения и один стэк, в который помещаются функции в очередь на выполнение. Это означает, что в один момент времени JavaScript может выполнить только одну операцию, другие операции при этом будут ждать своей очереди в стэке, пока их не вызовут.
Помимо стэка в браузерах присутствует особая очередь для работы с WebAPI, такими как: клики, таймауты, AJAX-запросы, веб-воркеры. Функции из этой очереди выполнятся по порядку только после того, как стэк будет полностью очищен. Только после этого они помещаются из очереди в стэк на выполнение. Если в стэке в данный момент находится хотя бы один элемент, то они в стэк попасть не могут. Как раз именно из-за этого вызов функций по таймаута часто бывает не точным по времени, так как функция не может попасть из очереди в стэк, пока он заполнен.
В JavaScript Event Loop работает следующим образом. Сначала в стэк попадает главная функция сценария. Над ней в стэк сверху падают функции, которые она вызывает по порядку их вызова. Параллельно этому, по мере выполнения функций из стэка, в очередь событий браузера попадают клики, таймауты, AJAX-запросы, веб-воркеры. Функции из стэка вызываются идя сверху вниз. По мере выполнения функций из стэка они удаляются из него. Как только стэк полностью очищается в него по очереди по одиночке начинают попадать функции из очереди событий, которые начинают заполнять стэк вызовом своих функции. По мере выполнения этих функций стэк опять очищается, тем самым позволяя попасть в него следующей функции из очереди событий. Таким образом весь процесс повторяется.
Асинхронное программирование в JavaScript
Асинхронное программирование в JavaScript не связано с многопоточностью. JavaScript – однопоточный, это означает, что не существует стандартных языковых конструкций, которые позволят создать в приложении дополнительный поток для выполнения параллельных вычислений. Асинхронное программирование – стиль программирования, при котором результат работы функций доступен не сразу, а через некоторое время. Асинхронная функция – это функция, после вызова которой JavaScript приложение продолжает работать, потому что функция сразу выполняет возврат. Результат работы асинхронной функции становится известным позже, и для того, чтобы оповестить наше приложении о полученных значениях, асинхронная функция вызывает другую функцию (callback), которую мы передаем в аргументах при запуске.
|
Например, getDataFromServer(onSuccess); getDataFromServer – асинхронная функция, выполняющая запрос на сервер, onSuccess – callback функция или функция обратного вызова, которая запускается при успешном завершении операции обращения к серверу.
|
|
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!