--- title: Worker slug: Web/API/Worker tags: - API - DOM - JavaScript - Reference - Web Workers - Worker - Workers translation_of: Web/API/Worker ---
{{APIRef("Web Workers API")}}
L'interface Worker de l'API Web Workers représente une tâche de fond qui peut facilement être créée et peut envoyer des messages en retour à son créateur. Créer un Worker est aussi simple que d'appeler le constructeur Worker()
, en spécifiant un script qui définira le comportement du thread du worker.
Notez qu'un worker peut lui aussi lancer d'autre Worker tant que ces autres workers sont hébergés par une page qui a la même origine que la page parente. (Note: Les workers imbriqués ne sont pas encore implémentés dans WebKit).
De plus les workers peuvent utiliser XMLHttpRequest
pour les communiquer avec le réseau, à l'exception des attributs responseXML
et channel
qui vont toujours retourner null
.
Toutes les interfaces et toutes les fonctions ne seront pas disponibles pour le script associé au worker.
Dans firefox, si vous souhaitez utiliser les workers dans une extension et que vous souhaitez avoir accès au js-ctypes, vous devez utiliser le {{ domxref("ChromeWorker") }} à la place.
Il hérite de propriétés de son parent, {{domxref("EventTarget")}}, et implémente les propriétés de {{domxref("AbstractWorker")}}.
error
arrive dans le worker. Il est hérité de {{domxref("AbstractWorker")}}.message
arrive dans le worker — i.e. quand un message est envoyé au document parent depuis le worker via {{domxref("DedicatedWorkerGlobalScope.postMessage")}}. Le message est stocké dans la propriété {{domxref("MessageEvent.data", "data")}} de l'événement.Il hérite de son parent, {{domxref("EventTarget")}}, et implémente les propriétés de {{domxref("AbstractWorker")}}.
ServiceWorker
ne supportent pas cette méthode.message
messageerror
rejectionhandled
onrejectionhandled
.unhandledrejection
onunhandledrejection
.L'extrait de code suivant montre la création d'un objet {{domxref("Worker")}} en utilisant le constructeur {{domxref("Worker.Worker", "Worker()")}} et l'utilisation de l'objet:
var monWorker = new Worker("worker.js");
var premier = document.querySelector('#numero1');
premier.onchange = function() {
monWorker.postMessage([premiere.valeur, deuxieme.valeur]);
console.log('Message envoyé au worker');
}
Pour un exemple complet, voir Exemple basique de worker dédié (exécuter le worker dédié).
Spécification | Statuts | Commentaire |
---|---|---|
{{SpecName('HTML WHATWG', "#worker", "Worker")}} | {{Spec2('HTML WHATWG')}} |
Voici le support des différents type de worker. Voir les pages de chaque worker pour avoir les particularités.
{{Compat("api.Worker")}}
Dans les premières versions des spécifications, charger un scripte worker en cross-origin lève une exception SecurityError
. Désormais, à la place un évènement {{event("error")}} lancé. Pour en savoir plus, voir (en) Loading cross-origin worker now fires error event instead of throwing; worker in sandboxed iframe no longer allowed.