Мы все знаем, что браузер выполняет js-код в одном потоке. Когда выполняется шаг страницы, страница не может ни на что ответить, пока этот шаг не завершится. Представленные здесь WebWorkers могут изменить все.
WebWorkers — это js-коды, которые работают в фоновом режиме, независимо от других скриптов и не влияют на производительность страницы. Мы можем продолжать делать все, что захотим: щелкать мышью, выбирать контент и т. д., в то время как WebWorkers работают в фоновом режиме.
Веб-воркеры поддерживаются всеми основными браузерами, кроме Internet Explorer.
Первый шаг: создайте рабочих.Вызовите конструктор Worker() и укажите URI сценария, который будет запущен в рабочем потоке. Например, на текущей странице указано, что сценарий, выполняемый рабочим потоком, — это script-worker.js.
вар myWorker = новый работник (script-worker.js);
В script-worker.js мы можем выполнять дополнительный код, и выполнение этого кода не повлияет на то, чтобы страница выполняла другие действия, которые вы хотите сделать, и это звучит великолепно.
Шаг 2: Передайте данные.Страница может взаимодействовать с исполнителем для передачи данных, чтобы работник мог выполнять вычисления автоматически, не влияя на способность страницы выполнять значимые действия. Затем прикажите странице использовать данные.
//[Код главной страницы]myWorker.postMessage(data-from-mainpage);//[рабочий код]onmessage = function (oEvent) { console.log(Данные, отправленные с главной страницы: +oEvent.data)) ; };Выше приведена ситуация [главная страница отправляет данные рабочему скрипту], да, вы видели очень дружелюбное сообщение postMessage, окей, мне нравится эта штука.
//[Код главной страницы] myWorker.onmessage = function (oEvent) { console.log(Данные, отправленные рабочим скриптом: +oEvent.data) }; //[Код рабочего]postMessage(data-from-) главная страница);Выше приведена ситуация, когда рабочий скрипт отправляет данные на главную страницу. Это все еще очень просто, но это всего лишь API. Ключ в том, что умное использование полезно.
Кроме того, могут быть ошибки при выполнении воркера, и главная страница проходит:
myWorker.onerror=function(oEvent){};Вы можете отслеживать ошибки работников.
Шаг 3: Важные моменты.Рабочий поток может выполнять задачи, не вмешиваясь в пользовательский интерфейс. Выполняемый код JavaScript находится полностью в другой области и не разделяет область действия с кодом на текущей веб-странице.
Метод importScripts() предоставляется в глобальной области действия Worker, который получает один или несколько URL-адресов, указывающих на файлы JavaScript. Процесс загрузки выполняется асинхронно.
importScripts() вступит в силу только в том случае, если вы предоставите абсолютный URI, а процесс выполнения также будет асинхронным.
Когда мы создаем объект WebWorkers, он будет продолжать прослушивать сообщения (даже после завершения внешнего сценария) до тех пор, пока не будет завершен. Используйте метод myWorker.terminate(), чтобы завершить работу WebWorkers и освободить ресурсы браузера/компьютера.
Шаг 4: Важные ограничения.1. Невозможно получить доступ к узлам DOM, глобальным переменным или глобальным функциям, невозможно вызвать такие функции, как alert() или подтвердить, а также невозможно получить доступ к глобальным переменным браузера, таким как окно и документ;
2. Однако Javascript в Web Worker по-прежнему может использовать такие функции, как setTimeout() и setInterval(), а также объект XMLHttpRequest для связи Ajax.
Выше приведено все содержание этой статьи. Я надеюсь, что она будет полезна для изучения всеми. Я также надеюсь, что все поддержат сеть VeVb Wulin.