Used to perform a computationally expensive task without interrupting the user interface
<script>
var worker = new Worker('worker.js');
</script>
Browser ignores MIME type
window, document, parent, console, alert<script>
var worker = new Worker('worker.js');
worker.onmessage = function (event) {
console.dir(event.data);
worker.postMessage({ letter: 'R', number: 42 })
};
</script>
self.postMessage({ name: 'Rulio' });
self.onmessage = function (event) {
// do something with event.data;
};
No sharing - messages are copied
What CAN they do?
navigator objectlocation object (read-only)XMLHttpRequestsetTimeout/setInterval/...importScripts()new Worker('subworker.js')worker.onerror = function(e) {
throw new Error(event.message
+ " (" + event.filename + ":"
+ event.lineno + ")");
};
From the origin:
worker.terminate()
From the worker:
self.close()
port (MessagePort objects) to communicateworker.port.start() onconnect<script>
var worker = new SharedWorker('sharedworker.js', 'name');
worker.port.onmessage = function(e) { //not worker.onmessage!
console.dir(e.data);
};
</script>
sharedworker.js
onconnect = function(e) {
var port = e.ports[0];
port.postMessage('Hello World!');
};
need to use onconnect
Expected to be: