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.
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.)
EventTarget Worker
Constructors
Worker()
Creates a dedicated web worker that executes the script at the specified URL. This also works for Blob URLs .
Instance properties
Inherits properties from its parent, EventTarget
.
Instance 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 .
Example
The following code snippet creates a Worker
object using the Worker()
constructor, then uses the worker object:
const myWorker = new Worker ( "/worker.js" ) ;
const first = document. querySelector ( "input#number1" ) ;
const second = document. querySelector ( "input#number2" ) ;
first. onchange = ( ) => {
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
Browser compatibility
Desktop
Mobile
Chrome
Edge
Firefox
Internet Explorer
Opera
Safari
WebView Android
Chrome Android
Firefox for Android
Opera Android
Safari on IOS
Samsung Internet
Worker
4
12
3.5
10
10.6
4
4.4
18
4
11
5
1.0
Worker
2
12
3.5
10
10.6
4
4.4
18
4
11
5
1.0
error_event
4
12
3.5
10
10.6
4
4.4
18
4
11
5
1.0
message_event
4
12
3.5
10
10.6
4
4.4
18
4
11.5
5
1.0
messageerror_event
60
18
57
No
47
16.4
60
60
57
47
16.4
8.0
postMessage
2
12
3.5
10 Internet Explorer does not support Transferable
objects.
10.6
4
4.4
18
4
11
5
1.0
terminate
2
12
3.5
10
10.6
4
4.4
18
4
11
5
1.0
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