Worker
The Worker
interface of the Web Workers API represents a background task that can be created via script, which can send messages back to its creator.
Creating a worker is done by calling the Worker("path/to/worker/script")
constructor.
Workers may themselves spawn new workers, as long as those workers are hosted at the same origin as the parent page. (Note: nested workers are not yet implemented in WebKit).
Not all interfaces and functions are available to scripts inside a Worker
. Workers may use XMLHttpRequest
for network communication, but its responseXML
and channel
attributes are always null
. (fetch
is also available, with no such restrictions.)
Constructors
Properties
Inherits properties from its parent, EventTarget
.
Methods
Inherits methods from its parent, EventTarget
.
Worker.postMessage()
-
Sends a message — consisting of any JavaScript object — to the worker's inner scope.
Worker.terminate()
-
Immediately terminates the worker. This does not let worker finish its operations; it is halted at once.
ServiceWorker
instances do not support this method.
Events
error
-
Fires when an error occurs in the worker.
message
-
Fires when the worker's parent receives a message from that worker.
messageerror
-
Fires when a
Worker
object receives a message that can't be deserialized. rejectionhandled
-
Fires every time a
Promise
rejects, regardless of whether or not there is a handler to catch the rejection. unhandledrejection
-
Fires when a
Promise
rejects with no handler to catch the rejection.
Example
The following code snippet creates a Worker
object using the Worker()
constructor, then uses the worker object:
var myWorker = new Worker('/worker.js');
var first = document.querySelector('input#number1');
var second = document.querySelector('input#number2');
first.onchange = function() {
myWorker.postMessage([first.value, second.value]);
console.log('Message posted to worker');
}
For a full example, see our Basic dedicated worker example (run dedicated worker).
Specifications
Specification |
---|
HTML Standard # dedicated-workers-and-the-worker-interface |
Browser compatibility
BCD tables only load in the browser
Support varies for different types of workers. See each worker type's page for specifics.
Cross-origin worker error behavior
In early versions of the spec, loading a cross-origin worker script threw a SecurityError
. Nowadays, an error
event is thrown instead.
See also
- Using Web Workers
- Functions and classes available to Web Workers
- Other kind of workers:
SharedWorker
and Service Worker.