Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

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

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

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)

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

Window
.

void close

Переводит поток выполнения в особое состояние «завершения». Оказавшись в этом состоянии он больше не будет возбуждать события. Сценарий продолжит работу до момента возврата в цикл событий фонового потока выполнения, где тут же будет остановлен.

void importScripts(string urls...)

Для каждого из аргументов urls этот метод разрешает URL-адрес относительно свойства

location
, затем загружает содержимое URL-адреса и выполняет его, как программный код на языке JavaScript. Обратите внимание, что это синхронный метод. Он загружает и выполняет файлы по очереди и не возвращает управление, пока не выполнит все сценарии. (Однако, если какой-то сценарий возбудит исключение, это исключение начнет распространение и помешает загрузке и выполнению следующих за ним сценариев.)

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

Отправляет сообщение message (и массив портов, если указан) потоку выполнения, породившему данный фоновый поток. Вызов этого метода генерирует событие «message» в объекте

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

long setlnterval(any handler, [any timeout], any args...)

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

Window
.

long setTimeout(any handler, [any timeout], any args...)

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

Window
.

Конструкторы

Объект

WorkerGlobalScope
содержит все конструкторы базового JavaScript, такие как
Агray, Date и RegExp
. Он также определяет некоторые наиболее важные конструкторы клиентского JavaScript, позволяющие создавать объекты
XMLHttpRequest, FileReaderSync
и даже сам объект
Worker
.

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

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

EventTarget
, реализованными в объекте
WorkerGlobalScope
.

onerror

Это необычный обработчик события: это свойство больше похоже на свойство

onerror
объекта
Window
, чем на свойство
onerror
объекта
Worker
. Когда в фоновом потоке выполнения появляется необработанное исключение, будет вызвана эта функция, если она определена, с тремя строковыми аргументами, определяющими сообщение об ошибке, URL-адрес сценария и номер строки в сценарии. Если функция вернет false, исключение будет считаться обработанным и прекратит дальнейшее распространение. В противном случае, если это свойство не установлено или обработчик не вернул false, исключение продолжит распространение и вызовет событие «error» в объекте
Worker
в родительском потоке выполнение.

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

Зубных дел мастер

Дроздов Анатолий Федорович
1. Зубных дел мастер
Фантастика:
научная фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Зубных дел мастер

Бывшие. Война в академии магии

Берг Александра
2. Измены
Любовные романы:
любовно-фантастические романы
7.00
рейтинг книги
Бывшие. Война в академии магии

Идеальный мир для Лекаря 7

Сапфир Олег
7. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 7

Возвышение Меркурия. Книга 3

Кронос Александр
3. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 3

Кодекс Охотника. Книга X

Винокуров Юрий
10. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
6.25
рейтинг книги
Кодекс Охотника. Книга X

Хозяин Теней

Петров Максим Николаевич
1. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней

Опасная любовь командора

Муратова Ульяна
1. Проклятые луной
Фантастика:
фэнтези
5.00
рейтинг книги
Опасная любовь командора

Друд, или Человек в черном

Симмонс Дэн
Фантастика:
социально-философская фантастика
6.80
рейтинг книги
Друд, или Человек в черном

Волхв

Земляной Андрей Борисович
3. Волшебник
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Волхв

Мастер Разума VII

Кронос Александр
7. Мастер Разума
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер Разума VII

Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен

Агеева Елена А.
Документальная литература:
публицистика
5.40
рейтинг книги
Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен

Сумеречный Стрелок 5

Карелин Сергей Витальевич
5. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 5

Морской волк. 1-я Трилогия

Савин Владислав
1. Морской волк
Фантастика:
альтернативная история
8.71
рейтинг книги
Морской волк. 1-я Трилогия

Прогрессор поневоле

Распопов Дмитрий Викторович
2. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прогрессор поневоле