Worker
======

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` (en-US) 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
-------------

`Worker()`

Créer un web worker dédié qui execute le script qui est au bout de l'URL spécifié. Les workers peuvent aussi être créés en utilisant les Blobs.

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` (en-US)

Un `EventListener` qui est appelé quand un `ErrorEvent` de type `error` arrive dans le worker. Il est hérité de `AbstractWorker`.

`Worker.onmessage`

Un `EventListener` qui est appelé quand un `MessageEvent` de type `message` arrive dans le worker — i.e. quand un message est envoyé au document parent depuis le worker via `DedicatedWorkerGlobalScope.postMessage` (en-US). Le message est stocké dans la propriété `data` (en-US) de l'événement.

`Worker.onmessageerror` (en-US)

Un gestionnaire d'évènement qui indique le code à appeler quand un message `messageerror` (en-US) arrive.

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 `ServiceWorker` ne 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` (en-US)

Lorsque le worker reçois un message qu'il ne peut désérialiser. Aussi disponible à travers la propriété `Worker.onmessageerror` (en-US).


`rejectionhandled`

Levé à chaque fois qu'une `Promise` est rejeté, avec ou sans gestionnaire pour intercepter l'exception. Aussi disponible à travers le gestionnaire `onrejectionhandled` (en-US).

`unhandledrejection` (en-US)

Levé quand une `Promise` est rejetée sans gestionnaire pour récupérer l'exception. Aussi disponible à travers la propriété `onunhandledrejection` (en-US).

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:


```js
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 Standard # dedicated-workers-and-the-worker-interface |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

### 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` (en-US) lancé.

Voir aussi
----------

* Utiliser les web Worker
* Fonctions et classes disponibles dans les Web Workers
* D'autres type de workers: `SharedWorker`, et ServiceWorker (en-US).
* Worker non-standard, spécifique à Gecko: `ChromeWorker`, utilisé par les extensions.