Книга: JavaScript. Подробное руководство, 6-е издание
Worker
Worker
фоновый поток выполнения (EventTarget)
Объект Worker
представляет фоновый поток выполнения. Создать новый объект Worker
можнос помощью конструктора Worker(),
передав ему URL-адрес файла с программным кодом на языке JavaScript. Прогрaммный код в этом файле может использовать синхронные прикладные интерфейсы или выполнять продолжительные вычисления, не оказывая влияния на главный поток выполнения. Фоновые потоки работают в отдельном контексте выполнения (см. WorkerGlobalScope
), и обмен данными с фоновым потоком выполнения возможен только через механизм асинхронных событий. Отправить данные фоновому потоку можно вызовом метода postMessage(),
а получить - с помощью обработчика события «message».
Введение в фоновые потоки выполнения приводится в разделе 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()
.
- ApplicationCache
- ArrayBuffer
- ArrayBufferView
- Attr
- Audio
- BeforeUnloadEvent
- Blob
- BlobBuilder
- Button
- Canvas
- BlobBuilder
- Button
- Canvas
- CanvasGradient
- CanvasPattern
- CanvasRenderingContext2D
- ClientRect
- CloseEvent
- Comment
- Console
- ConsoleCommandLine
- CSS2Properties
- CSSRule
- CSSStyleDeclaration
- CSSStyleSheet
- DataTransfer
- DataView
- Document
- DocumentFragment
- DocumentType
- DOMException
- DOMImplementation
- DOMSettableTokenList
- DOMTokenList
- Element
- ErrorEvent
- Event
- EventSource
- EventTarget
- FieldSet
- File
- FileError
- FileReader
- FileReaderSync
- Form
- FormControl
- Form Data
- FormValidity
- Geocoordinates
- Geolocation
- GeolocationError
- Geoposition
- HashChangeEvent
- History
- HTMLCollection
- HTMLDocument
- HTMLEIement
- HTMLFormControlsCollection
- HTMLOptionsCollection
- IFrame
- Image
- ImageData
- Input
- jQuery jQuery 1.4
- KeyEvent
- Label
- Link
- Location
- MediaElement
- MediaError
- MessageChannel
- MessageEvent
- MessagePort
- Meter
- MouseEvent
- Navigator
- Node
- NodeList
- Option
- Output
- PageTransitionEvent
- PopStateEvent
- ProcessingInstruction
- Progress
- ProgressEvent
- Screen
- Script
- Select
- Storage
- StorageEvent
- Style
- Table
- TableCell
- TableRow
- TableSection
- Text
- TextArea
- TextMetrics
- TimeRanges
- TypedArray
- URL
- Video
- WebSocket
- Window
- Worker
- WorkerGlobalScope
- WorkerLocation
- WorkerNavigator
- XMLHttpRequest
- XMLHttpRequestUpload
- Using the BackgroundWorker Control
- WorkerNavigator
- WorkerLocation
- 22.4.1. Объект Worker
- WorkerGlobalScope
- Apache Multiprocessing Modules
- 15.4.1. Debugging Multiple Processes
- 15.4.2. Debugging Multithreaded Applications
- 4.1.2. Thread Usage
- 4.3.4. Example Processor Allocation Algorithms
- 11.5 A Model for Implementing the Soft-Timer Handling Facility
- 11.5.1 Possible Processing Delays