From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../index.html | 240 +++++++++++++++++++++ files/fr/web/api/worker/index.html | 132 ++++++++++++ files/fr/web/api/worker/onmessage/index.html | 79 +++++++ files/fr/web/api/worker/postmessage/index.html | 153 +++++++++++++ files/fr/web/api/worker/terminate/index.html | 58 +++++ files/fr/web/api/worker/worker/index.html | 88 ++++++++ 6 files changed, 750 insertions(+) create mode 100644 files/fr/web/api/worker/functions_and_classes_available_to_workers/index.html create mode 100644 files/fr/web/api/worker/index.html create mode 100644 files/fr/web/api/worker/onmessage/index.html create mode 100644 files/fr/web/api/worker/postmessage/index.html create mode 100644 files/fr/web/api/worker/terminate/index.html create mode 100644 files/fr/web/api/worker/worker/index.html (limited to 'files/fr/web/api/worker') diff --git a/files/fr/web/api/worker/functions_and_classes_available_to_workers/index.html b/files/fr/web/api/worker/functions_and_classes_available_to_workers/index.html new file mode 100644 index 0000000000..379f86edd6 --- /dev/null +++ b/files/fr/web/api/worker/functions_and_classes_available_to_workers/index.html @@ -0,0 +1,240 @@ +--- +title: Fonctions et classes disponibles dans les Web Workers +slug: Web/API/Worker/Functions_and_classes_available_to_workers +translation_of: Web/API/Web_Workers_API/Functions_and_classes_available_to_workers +--- +

En plus de l'ensemble des fonctions standard JavaScript (telles que {{jsxref("Global_Objects/String", "String")}}, {{jsxref("Global_Objects/Array", "Array")}}, {{jsxref("Global_Objects/Object", "Object")}}, {{jsxref("Global_Objects/JSON", "JSON")}} etc), des fonctions du DOM restent disponibles pour les workers. Cet article en fournit la liste.

+ +

Les workers s'exécutent dans un contexte global, {{domxref("DedicatedWorkerGlobalScope")}} différent du contexte de la fenêtre courante. Par défaut les méthodes et propriétés de {{domxref("Window")}} ne leur sont pas disponibles, mais {{domxref("DedicatedWorkerGlobalScope")}}, comme Window, implémente {{domxref("WindowTimers")}} et {{domxref("WindowBase64")}}.

+ +

Comparaison des propriétés et méthodes des différents types de workers

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FonctionsWorkers dédiésWorkers partagésService workersChrome workers {{Non-standard_inline}}En dehors des  workers
{{domxref("WindowBase64.atob", "atob()")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("Window")}}
{{domxref("WindowBase64.btoa", "btoa()")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("Window")}}
{{domxref("WindowTimers.clearInterval", "clearInterval()")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("Window")}}
{{domxref("WindowTimers.clearTimeout", "clearTimeout()")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("Window")}}
{{domxref("Window.dump()", "dump()")}} {{non-standard_inline}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("Window")}}
{{domxref("WindowTimers.setInterval", "setInterval()")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("Window")}}
{{domxref("WindowTimers.setTimeout", "setTimeout()")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("Window")}}
{{domxref("WorkerGlobalScope.importScripts", "importScripts()")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}non
{{domxref("WorkerGlobalScope.close", "close()")}} {{non-standard_inline}}oui, sur {{domxref("WorkerGlobalScope")}}oui, sur {{domxref("WorkerGlobalScope")}}oui, mais sans effetInconnunon
{{domxref("DedicatedWorkerGlobalScope.postMessage", "postMessage()")}}oui, sur {{domxref("DedicatedWorkerGlobalScope")}}nonnonInconnunon
+ +

APIs disponibles dans les workers

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FonctionFonctionnalitéSupport dans Gecko (Firefox)Support dans IESupport dans Blink (Chrome et Opera)Support dans WebKit (Safari)
XMLHttpRequestCrée et retourne un nouvel objet {{domxref("XMLHttpRequest")}}; il imite le comportement du constructeur standard XMLHttpRequest(). Remarquez que les attributs responseXML et channel de XMLHttpRequest retourne toujours null. +

Basique : {{CompatGeckoDesktop("1.9.1")}}

+ +

{{domxref("XMLHttpRequest.response", "response")}} et {{domxref("XMLHttpRequest.responseType", "responseType")}} sont disponibles depuis {{CompatGeckoDesktop("10")}}

+ +

{{domxref("XMLHttpRequest.timeout", "timeout")}} et {{domxref("XMLHttpRequest.ontimeout", "ontimeout")}} sont disponibles depuis {{CompatGeckoDesktop("13")}}

+
{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
WorkerCrée un nouveau {{ domxref("Worker") }}. Oui, les workers peuvent engendrer des workers supplémentaires.{{CompatGeckoDesktop("1.9.1")}}10.0{{CompatNo}} Voir crbug.com/31666{{CompatNo}}
{{ domxref("URL") }}Les workers peuvent utiliser les méthodes statiques URL.createObjectURL et URL.revokeObjectURL avec les objets {{domxref("Blob")}} accessibles au worker.
+ Les workers peuvent aussi créer une nouvelle URL en utilisant le constructeur {{domxref("URL.URL", "URL()")}} et appeler n'importe quelle méthode normale sur l'objet retourné.
{{CompatGeckoDesktop(21)}} et {{CompatGeckoDesktop(26)}} pour le constructeur URL(){{CompatNo}}{{CompatNo}}{{CompatNo}}
{{domxref("TextEncoder")}} and {{domxref("TextDecoder")}}Crée et retourne un nouveau {{domxref("TextEncoder")}}, ou respectivement {{domxref("TextDecoder")}}, permettant d'encoder ou de décoder des chaînes de caractère dans un encodage spécifique.{{CompatGeckoDesktop(20)}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
{{domxref("WorkerNavigator")}}Le sous-ensemble de l'interface {{domxref("Navigator")}} disponible aux workers.Implémentation basique {{CompatVersionUnknown}}
+ {{domxref("NavigatorID.appCodeName", "appCodeName")}}, {{domxref("NavigatorID.product", "product")}}, {{domxref("NavigatorID.taintEnabled", "taintEnabled()")}}: {{CompatGeckoDesktop(28)}}
+ {{domxref("WorkerNavigator.onLine", "onLine")}}: {{CompatGeckoDesktop(29)}}
+ {{domxref("NavigatorLanguage")}}: {{CompatNo}}
{{domxref("NavigatorID.appName", "appName")}}, {{domxref("NavigatorID.appVersion", "appName")}}, {{domxref("WorkerNavigator.onLine", "onLine")}}, {{domxref("NavigatorID.platform", "platform")}}, {{domxref("NavigatorID.userAgent", "userAgent")}}: 10.0
+ Autre : {{CompatNo}}
{{CompatVersionUnknown}}{{CompatVersionUnknown}}
{{domxref("WorkerLocation")}}Le sous-ensemble de l'interface {{domxref("Location")}} disponible aux workers.{{CompatGeckoDesktop(1.9.2)}}10.0{{CompatVersionUnknown}}{{CompatVersionUnknown}}
{{domxref("WorkerGlobalScope")}}Le contexte global des workers. Cet objet définit les fonctions spécifiques aux workers.{{CompatVersionUnknown}}10.0{{CompatVersionUnknown}}{{CompatVersionUnknown}}
{{domxref("ImageData")}}Les données en pixels sous-jacentes à une zone d'un élément {{domxref("canvas")}}. Manipuler de telles données peut être une tâche complexe qu'il est plus approprié de déléguer à un web worker.{{CompatGeckoDesktop(25)}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
{{domxref("FileReaderSync")}}Cette API permet la lecture synchrone d'objets {{domxref("Blob")}} et {{domxref("File")}}. C'est une API qui fonctionne uniquement au sein des workers.{{CompatGeckoDesktop(8)}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
{{domxref("IndexedDB_API", "IndexedDB")}}Une base de données pour stocker des enregistrements contenant des valeurs simples et des objets hiérarchiques.{{CompatGeckoDesktop(37)}}10.0{{CompatVersionUnknown}}{{CompatNo}}
{{domxref("WebSocket")}}Crée et retourne un nouvel objet {{domxref("WebSocket")}}; Il imite le comportement d'un constructeur WebSocket() standard.{{CompatGeckoDesktop(36)}}11.0{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Data Store APIUn mécanisme de stockage puissant et flexible pour de multiples applications Firefox OS qui ont l'habitude de stocker et d'échanger des données entre elles de manière rapide, efficace et sécurisée.Seulement dans les applications internes (certifiées) de Firefox OS, deuis v1.0.1.{{CompatNo}}{{CompatNo}}{{CompatNo}}
PromisesLes objets JavaScript qui vous permettent d'écrire des fonctions asynchrones.{{CompatGeckoDesktop(28)}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+ +

Voir aussi

+ + diff --git a/files/fr/web/api/worker/index.html b/files/fr/web/api/worker/index.html new file mode 100644 index 0000000000..98ed0a13c4 --- /dev/null +++ b/files/fr/web/api/worker/index.html @@ -0,0 +1,132 @@ +--- +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.

+
+ +

Constructeurs

+ +
+
{{domxref("Worker.Worker", "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, {{domxref("EventTarget")}}, et implémente les propriétés de {{domxref("AbstractWorker")}}.

+ +

Gestionnaires d'événements

+ +
+
{{domxref("AbstractWorker.onerror")}}
+
Un {{ domxref("EventListener") }} qui est appelé quand un {{domxref("ErrorEvent")}} de type error arrive dans le worker. Il est hérité de {{domxref("AbstractWorker")}}.
+
{{domxref("Worker.onmessage")}}
+
Un {{ domxref("EventListener") }} qui est appelé quand un {{domxref("MessageEvent")}} de type 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.
+
{{domxref("Worker.onmessageerror")}}
+
Un {{domxref("EventHandler")}} qui indique le code à appeler quand un message {{event("messageerror")}} arrive.
+
+ +
+
+ +

Méthodes

+ +

Il hérite de son parent, {{domxref("EventTarget")}}, et implémente les propriétés de {{domxref("AbstractWorker")}}.

+ +
+
{{domxref("Worker.postMessage()")}}
+
Envoie un message, qui est n'importe quel objets JavaScript vers la clôture du worker.
+
{{domxref("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é {{domxref("Worker.onmessage")}}.
+
messageerror
+
Lorsque le worker reçois un message qu'il ne peut désérialiser. Aussi disponible à travers la propriété {{domxref("Worker.onmessageerror")}}.
+
+ +
+
rejectionhandled
+
Levé à chaque fois qu'une {{jsxref("Promise")}} est rejeté, avec ou sans gestionnaire pour intercepter l'exception. Aussi disponible à travers le gestionnaire onrejectionhandled.
+
unhandledrejection
+
Levé quand une {{jsxref("Promise")}} est 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 {{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écifications

+ + + + + + + + + + + + + + +
SpécificationStatutsCommentaire
{{SpecName('HTML WHATWG', "#worker", "Worker")}}{{Spec2('HTML WHATWG')}}
+ +

Compatibilité avec les navigateurs

+ +
+

Voici le support des différents type de worker. Voir les pages de chaque worker pour avoir les particularités.

+ + + +

{{Compat("api.Worker")}}

+ +

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 {{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.

+
+ +

Voir aussi

+ + diff --git a/files/fr/web/api/worker/onmessage/index.html b/files/fr/web/api/worker/onmessage/index.html new file mode 100644 index 0000000000..be2e625626 --- /dev/null +++ b/files/fr/web/api/worker/onmessage/index.html @@ -0,0 +1,79 @@ +--- +title: Worker.onmessage +slug: Web/API/Worker/onmessage +tags: + - API + - Property + - Reference +translation_of: Web/API/Worker/onmessage +--- +

{{ APIRef("Web Workers API") }}

+ +

La propriété onmessage de l'interface {{domxref("Worker")}} représente un {{domxref("EventHandler")}}, à savoir une fonction qui est appelée lorsque l'événement {{event("message")}} survient. Ces événements sont du type {{domxref("MessageEvent")}} et sont appelés quand le parent du worker reçoit un message (c’est-à-dire à partir de la méthode {{domxref("DedicatedWorkerGlobalScope.postMessage")}}).

+ +
+

Remarque : le contenu du message est fourni par la propriété data de l'événement {{event("message")}}.

+
+ +

Syntaxe

+ +
myWorker.onmessage = function(e) { ... }
+ +

Exemple

+ +

L'extrait de code suivant illustre la création d'un objet {{domxref("Worker")}} utilisant le constructeur {{domxref("Worker.Worker", "Worker()")}}. Les messages sont passés au worker lorsque la valeur de l'élément de formulaire first change. Un gestionnaire onmessage est également présent pour s'occuper des messages retournés par le worker.

+ +
var myWorker = new Worker("worker.js");
+
+first.onchange = function() {
+  myWorker.postMessage([first.value,second.value]);
+  console.log('Message envoyé au worker');
+}
+
+myWorker.onmessage = function(e) {
+  result.textContent = e.data;
+  console.log('Message reçu du worker');
+}
+
+ +

Dans le script worker.js, un gestionnaire onmessage se charge des messages en provenance du script principal :

+ +
onmessage = function(e) {
+  console.log('Message reçu du script principal');
+  var workerResult = 'Result: ' + (e.data[0] * e.data[1]);
+  console.log('Renvoi d\'un message au script principal');
+  postMessage(workerResult);
+}
+ +

Remarquez comment dans le script principal, onmessage doit être appelée par myWorker, tandis que dans le script du worker vous avez juste besoin d'appeler onmessage parce que le worker est en réalité le contexte global ({{domxref("DedicatedWorkerGlobalScope")}}).

+ +

Pour un exemple complet, consulter notre Exemple basique de worker dédié (lancez le worker dédié).

+ +

Spécifications

+ + + + + + + + + + + + + + +
SpécificationStatutCommentaire
{{SpecName('HTML WHATWG', "#handler-worker-onmessage", "Worker.onmessage")}}{{Spec2('HTML WHATWG')}}
+ +

Compatibilité des navigateurs

+ +
+ + +

{{Compat("api.Worker.onmessage")}}

+
+ +

Voir aussi

+ +

L'interface {{domxref("Worker")}} à laquelle elle appartient.

diff --git a/files/fr/web/api/worker/postmessage/index.html b/files/fr/web/api/worker/postmessage/index.html new file mode 100644 index 0000000000..d8a3e7be93 --- /dev/null +++ b/files/fr/web/api/worker/postmessage/index.html @@ -0,0 +1,153 @@ +--- +title: Worker.postMessage() +slug: Web/API/Worker/postMessage +translation_of: Web/API/Worker/postMessage +--- +

{{ apiref("Worker") }}

+ +

La méthode Worker.postMessage() envoie un message à la portée locale du worker. Cette fonction accepte un seul paramètre, qui est la donnée à envoyer au worker. Cette donnée peut-être de n'importe quelle valeur ou un objet JavaScript pris en charge par l'algorithme de clone structuré, qui inclut les références cycliques.

+ +

Le Worker peut renvoyer une information au thread qui l'a créé en utilisant la méthode {{domxref("DedicatedWorkerGlobalScope.postMessage")}}.

+ +

Syntaxe

+ +
worker.postMessage(aMessage, [transferList]);
+ +

Paramètres

+ +
+
aMessage
+
L'objet à envoyer au worker; il va être dans le champ de donnée data dans l'évènement délivré au gestonnaire d'évènement {{domxref("Worker.onmessage")}}. Cette donnée peut être de n'importe quelle valeur ou un objet JavaScript pris en charge par l'algorithme de clone structuré, qui inclut les références cycliques.
+
transferList {{optional_inline}}
+
Un tableau optionnel d'objets {{domxref("Transferable")}} desquels on doit transférer la propriété. Si la propriété d'un objet est transférée, il devient inutilisable (neutralisé) pour le contexte émétteur et devient disponible uniquement pour le worker auquel cela a été envoyé.
+
Seulement des objets de types {{domxref("MessagePort")}}, {{domxref("ArrayBuffer")}} ou {{domxref("ImageBitmap")}} peuvent être transférés. null n'est pas une valeur accéptée pour transfer.
+
+

Retour

+
+
+ +

Vide.

+ +

Exemple

+ +

L'extrait de code suivant montre la création d'un objet {{domxref("Worker")}} en utilisant le constructeur {{domxref("Worker.Worker", "Worker()")}}. Quand les deux champs de formulaire (fisrt et second) ont été changés, les évènements {{event("change")}} invoquent postMessage() pour envoyer la valeur des deux entrées au worker courant.

+ +
var myWorker = new Worker('worker.js');
+
+first.onchange = function() {
+  myWorker.postMessage([first.value,second.value]);
+  console.log('Message posted to worker');
+}
+
+second.onchange = function() {
+  myWorker.postMessage([first.value,second.value]);
+  console.log('Message posted to worker');
+}
+ +

Pour l'exemple en entier, voir Basic dedicated worder example (démonstration).

+ +
+

Remarque: postMessage() peut n'envoyer qu'un objet à la fois. Comme ci-dessus, si vous voulez envoyez plusieurs valeurs, vous pouvez utiliser un tableau.

+
+ +

Exemple de transfert

+ +

Cette exemple montre une extension pour Firefox qui transfert un ArrarBuffer depuis le thread principal vers le ChromeWorker, et le ChromeWorker répond au le thread principal.

+ +

Main thread code:

+ +
var myWorker = new ChromeWorker(self.path + 'myWorker.js');
+
+function handleMessageFromWorker(msg) {
+    console.log('incoming message from worker, msg:', msg);
+    switch (msg.data.aTopic) {
+        case 'do_sendMainArrBuff':
+            sendMainArrBuff(msg.data.aBuf)
+            break;
+        default:
+            throw 'no aTopic on incoming message to ChromeWorker';
+    }
+}
+
+myWorker.addEventListener('message', handleMessageFromWorker);
+
+// Ok lets create the buffer and send it
+var arrBuf = new ArrayBuffer(8);
+console.info('arrBuf.byteLength pre transfer:', arrBuf.byteLength);
+
+myWorker.postMessage(
+    {
+        aTopic: 'do_sendWorkerArrBuff',
+        aBuf: arrBuf // The array buffer that we passed to the transferrable section 3 lines below
+    },
+    [
+        arrBuf // The array buffer we created 9 lines above
+    ]
+);
+
+console.info('arrBuf.byteLength post transfer:', arrBuf.byteLength);
+ +

Worker code

+ +
self.onmessage = function (msg) {
+    switch (msg.data.aTopic) {
+        case 'do_sendWorkerArrBuff':
+                sendWorkerArrBuff(msg.data.aBuf)
+            break;
+        default:
+            throw 'no aTopic on incoming message to ChromeWorker';
+    }
+}
+
+function sendWorkerArrBuff(aBuf) {
+    console.info('from worker, PRE send back aBuf.byteLength:', aBuf.byteLength);
+
+    self.postMessage({aTopic:'do_sendMainArrBuff', aBuf:aBuf}, [aBuf]);
+
+    console.info('from worker, POST send back aBuf.byteLength:', aBuf.byteLength);
+}
+ +

Output logged

+ +
arrBuf.byteLength pre transfer: 8                              bootstrap.js:40
+arrBuf.byteLength post transfer: 0                             bootstrap.js:42
+
+from worker, PRE send back aBuf.byteLength: 8                  myWorker.js:5:2
+
+incoming message from worker, msg: message { ... }             bootstrap.js:20
+got back buf in main thread, aBuf.byteLength: 8                bootstrap.js:12
+
+from worker, POST send back aBuf.byteLength: 0                 myWorker.js:7:2
+ +

byteLength passe à 0 quand il est transferré. Pour voir l'exemple de cette extension de démonstration de Firefox, voir GitHub :: ChromeWorker - demo-transfer-arraybuffer

+ +

Spécifications

+ + + + + + + + + + + + + + +
SpécificationStatutCommentaire
{{SpecName('HTML WHATWG', "#dom-worker-postmessage", "Worker.postMessage()")}}{{Spec2('HTML WHATWG')}}
+ +

Compatibilité des navigateurs

+ +
+ + +

{{Compat("api.Worker.postMessage")}}

+[1] Internet Explorer ne supporte pas les objets {{domxref("Transferable")}}.
+ +

Voir aussi

+ + diff --git a/files/fr/web/api/worker/terminate/index.html b/files/fr/web/api/worker/terminate/index.html new file mode 100644 index 0000000000..6565192498 --- /dev/null +++ b/files/fr/web/api/worker/terminate/index.html @@ -0,0 +1,58 @@ +--- +title: Worker.terminate() +slug: Web/API/Worker/terminate +translation_of: Web/API/Worker/terminate +--- +

{{ apiref("Worker") }}

+ +

La méthode terminate() de l'interface {{domxref("Worker")}} termine immédiatement le {{domxref("Worker")}}. Cette interruption ne permet pas au worker de finaliser ses opérations, il est juste arrêté sur le champ.

+ +

Syntaxe

+ +
myWorker.terminate();
+ +

Paramètres

+ +

Aucun.

+ +

Valeur de retour

+ +

Néant.

+ +

Exemple

+ +

L'extrait de code suivant montre la création d'un objet {{domxref("Worker")}} en utilisant le constructeur {{domxref("Worker.Worker", "Worker()")}}, qui est alors immédiatement interrompu.

+ +
var myWorker = new Worker("worker.js");
+
+myWorker.terminate();
+
+ +

Spécifications

+ + + + + + + + + + + + + + +
SpécificationStatutCommentaire
{{SpecName('HTML WHATWG', "#dom-worker-terminate", "Worker.terminate()")}}{{Spec2('HTML WHATWG')}}
+ +

Compatibilité des navigateurs

+ +
+ + +

{{Compat("api.Worker.terminate")}}

+
+ +

Voir aussi

+ +

L'interface {{domxref("Worker")}} à laquelle elle appartient.

diff --git a/files/fr/web/api/worker/worker/index.html b/files/fr/web/api/worker/worker/index.html new file mode 100644 index 0000000000..34717d9a21 --- /dev/null +++ b/files/fr/web/api/worker/worker/index.html @@ -0,0 +1,88 @@ +--- +title: Worker() +slug: Web/API/Worker/Worker +tags: + - API + - Reference +translation_of: Web/API/Worker/Worker +--- +

{{APIRef("Worker")}}

+ +

Le constructeur Worker() crée un objet {{domxref("Worker")}} qui exécute le script à l'URL spécifiée. Ce script doit obéir à la same-origin policy.

+ +
+

Remarque : il y a un désaccord entre les éditeurs de navigateur sur la question de savoir si une donnée URI relève ou non de la même origine. Bien que Gecko 10.0 {{ geckoRelease("10.0") }} et suivant accepte les données URIs, ce n'est pas le cas dans tous les autres navigateurs.

+
+ +

Syntaxe

+ +
var myWorker = new Worker(aURL, options);
+ +

Arguments

+ +
+
aURL
+
Est un {{domxref("DOMString")}} représentant l'URL du script que le worker va exécuter. Il doit obéir à la same-origin policy.
+
options {{optional_inline}}
+
+

Un objet contenant des propriétés pour définir les options. Les propriétés suivantes sont valables:

+ +
    +
  • type: Une {{domxref("DOMString")}} définissant le type de worker à créer. The valeur peuvent être classic ou module. Si cette prpriété n'est pas définie, la valeur sera classic.
  • +
  • credentials: Une {{domxref("DOMString")}} définissant le type de politique d'origine à utiliser pour le worker. Les valeurs peuvent être omit, same-origin ou include. Si cette propriété n'est pas définie, ou que type est défini à classic, la valeur sera classic.
  • +
  • name: Une {{domxref("DOMString")}} définissant un identifiant pour l'environment du worker {{domxref("DedicatedWorkerGlobalScope")}}, souvent utilisé pour le débogage.       
  • +
+
+
+ +

Exceptions

+ + + +

Exemple

+ +

L'extrait de code suivant illustre la création d'un objet {{domxref("Worker")}} en utilisant le constructeur Worker() et l'usage qui peut alors en être fait :

+ +
var myWorker = new Worker("worker.js");
+
+first.onchange = function() {
+  myWorker.postMessage([first.value,second.value]);
+  console.log('Message envoyé au worker');
+}
+ +

Pour un exemple complet, consultez notre Exemple basique d'un worker dédié (lancer le worker dédié).

+ +

Spécifications

+ + + + + + + + + + + + + + +
SpécificationStatutCommentaire
{{SpecName('HTML WHATWG', "#dom-worker", "Worker()")}}{{Spec2('HTML WHATWG')}}
+ +

Compatibilité des navigateurs

+ + + +

{{Compat("api.Worker.Worker")}}

+ +
+

Remarque: Un navigateur peut indiquer avoir un support complet de Worker() même s'il ne supporte pas les fichiers worker écrit comme des modules. À partir du premier août 2019, aucun navigateur n'est connu pour avoir un support en production des fichiers worker écrit comme des modules. Sans ces suppports, les fichiers workers écrit sous forme de module et les modules utilisés dans les workers doivent être transpilés ou convertis en non-module pour être utilisables.

+
+ +

Voir aussi

+ +

L'interface {{domxref("Worker")}} auquel il appartient.

-- cgit v1.2.3-54-g00ecf