Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

Введение в фоновые потоки выполнения приводится в разделе 22.4.

Конструктор

new Worker(string scriptURL)

Создает новый объект

Worker
и запускает JavaScript-сценарий, находящийся по адресу scriptURL.

Методы

void postMessage(any message, [MessagePort[] ports])

Отправляет сообщение message фоновому потоку выполнения, котоpый получит его в виде объекта

MessageEvent
, в обработчике
onmessage
. Аргумент message может быть простым значением, объектом или массивом, но не функцией. Допускается передавать такие объекты клиентского JavaScript, как
ArrayBuffer, File, Blob и ImageData,
но узлы, такие как
Document
и
Element
, передавать нельзя (подробности приводятся во врезке «Структурированные копии» в главе 22).

Необязательный аргумент ports позволяет указать один или более прямых каналов связи с объектом

Worker
. Например, если имеются два объекта
Worker
, можно обеспечить прямое взаимодействие между ними, передав их конструкторам концы соединения
MessageChannel
.

void terminate

Останавливает фоновый поток выполнения и прерывает работу сценария в нем.

Обработчики событий

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

EventTarget
.

onerror

Когда в сценарии, выполняемом в фоновом потоке, возбуждается исключение и это исключение не обрабатывается обработчиком

onerror
объекта
WorkerGlobalScope
, генерируется событие «error» в объекте
Worker
. Обработчику этого события передается объект
ErrorEvent
. Событие «error» не всплывает. Если данный фоновый поток выполнения запущен другим фоновым потоком, отмена события «error» предотвратит его передачу родительскому фоновому потоку. Если объект
Worker
создан в главном потоке выполнения, отмена события может предотвратить вывод сообщения в консоли JavaScript.

onmessage

Когда сценарий, выполняемый в фоновом потоке, вызовет свою глобальную функцию

postMessage
(см. WorkerGlobalScope), в объекте
Worker
будет сгенерировано событие «message». Обработчику события будет передан объект
MessageEvent
, свойство
data
которого будет содержать копию значения, переданного сценарием из фонового потока выполнения методу
postMessage
.

WorkerGlobalScope

(EventTarget, Global)

Фоновый поток, представляющий объект

Worker
, работает в среде выполнения, совершенно отличной от родительского потока, породившего его. Объект
WorkerGlobalScope
является глобальным объектом для фонового потока выполнения, поэтому получается, что данная справочная статья описывает среду выполнения «внутри» объекта
Worker
. Поскольку объект
WorkerGlobalScope
играет роль глобального объекта, он наследует свойства и методы глобального объекта базового языка JavaScript.

Свойства

В дополнение к свойствам, перечисленным ниже, объект

WorkerGlobalScope
определяет все глобальные свойства базового JavaScript, такие как
Math и JS0N
.

readonly WorkerLocation location

Это свойство, подобно свойству

window, location
, является объектом
Location
: оно позволяет фоновому потоку проверить URL-адрес, откуда был загружен выполняемый в нем сценарий, и включает в себя свойства, возвращающие отдельные части URL.

readonly WorkerNavigator navigator

Это свойство, подобно свойству

window
,
navigator
, является объектом
Navigator
: оно определяет свойства, позволяющие фоновому потоку определить тип броузера, в котором он выполняется, и состояние подключения к сети.

readonly WorkerGlobalScope self

Это свойство ссылается на сам глобальный объект

WorkerGlobalScope
. Оно похоже на свойство window объекта
Window
в главном потоке выполнения.

Методы

В дополнение к методам, перечисленным ниже, объект

WorkerGlobalScope
определяет все глобальные функции базового JavaScript, такие как
isNaN и eval
.

void clearInterval(long handle)

В точности соответствует одноименному методу объекта

Window
.

void clearTimeout(long handle)

  • Читать дальше
  • 1
  • ...
  • 632
  • 633
  • 634
  • 635
  • 636
  • 637
  • 638
  • 639
  • 640
  • 641
  • 642

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: