Worker
Baseline
Widely available
*
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.
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.
Note :
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 ChromeWorker à la place.
Constructeurs
Propriétés
Il hérite de propriétés de son parent, EventTarget, et implémente les propriétés de AbstractWorker.
Gestionnaires d'événements
AbstractWorker.onerror-
Un
EventListenerqui est appelé quand unErrorEventde typeerrorarrive dans le worker. Il est hérité deAbstractWorker. Worker.onmessage-
Un
EventListenerqui est appelé quand unMessageEventde typemessagearrive dans le worker — i.e. quand un message est envoyé au document parent depuis le worker viaDedicatedWorkerGlobalScope.postMessage. Le message est stocké dans la propriétédatade l'événement. Worker.onmessageerror-
Un gestionnaire d'évènement qui indique le code à appeler quand un message
messageerrorarrive.
Méthodes
Il hérite de son parent, EventTarget, et implémente les propriétés de AbstractWorker.
Worker.postMessage()-
Envoie un message, qui est n'importe quel objets JavaScript vers la clôture du worker.
Worker.terminate()-
Termine immédiatement le worker. Ceci n'offre aucune chance au worker de finir son opération en cours, il est simplement arrêté une fois pour toute. Les instances de
ServiceWorkerne supportent pas cette méthode.
Évènements
message-
Lorsque le worker parent reçoit un message venant du worker. On peut aussi y accéder via la propriété
Worker.onmessage. messageerror-
Lorsque le worker reçois un message qu'il ne peut désérialiser. Aussi disponible à travers la propriété
Worker.onmessageerror.
rejectionhandled-
Levé à chaque fois qu'une
Promiseest rejeté, avec ou sans gestionnaire pour intercepter l'exception. Aussi disponible à travers le gestionnaireonrejectionhandled. unhandledrejection-
Levé quand une
Promiseest rejetée sans gestionnaire pour récupérer l'exception. Aussi disponible à travers la propriétéonunhandledrejection.
Exemple
L'extrait de code suivant montre la création d'un objet Worker en utilisant le constructeur 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écifications
| Specification |
|---|
| HTML> # dedicated-workers-and-the-worker-interface> |
Compatibilité des navigateurs
Chargement…
Comportement des erreur Cross-origin sur les 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 error lancé.
Voir aussi
- Utiliser les web Worker
- Fonctions et classes disponibles dans les Web Workers
- D'autres type de workers:
SharedWorker, et ServiceWorker. - Worker non-standard, spécifique à Gecko:
ChromeWorker, utilisé par les extensions.