J'utilise cet outil Web qui contient une variable globale déclarée. Puis-je accéder à la même (variable globale dans le travailleur 1) dans le travailleur Web nouvellement généré (travailleur 2)?
Lorsque j'ai essayé d'utiliser jQuery dans Web Worker, j'obtiens l'erreur "la fenêtre n'est pas définie". Existe-t-il un moyen d'utiliser jQuery dans un Web Worker
?
importScripts ('jquery-latest.js'); fonction fetch_ajax (url) { $ .ajax ({ type: '. GET ', Url: url, Succès: fonction (réponse) { PostMessage (réponse); } }); } fetch_ajax ('test.txt');
Les travailleurs Web n'ont pas d'objet window
.
Pour accéder à l'état global, utilisez à la place self
, du code qui fonctionnera à la fois sur le thread principal et le thread de travail.
Mais notez que vous ne pourrez toujours pas accéder ou manipuler le parent DOM
(par exemple, obtenir window.jQuery
via self.jQuery
).
Alors que la fenêtre du thread principal self
pointe vers l'objet Window, dans les threads de travail self
pointe vers un objet WorkerGlobalScope
distinct.
Basé sur @buley tip, je l'ai fait:
var window = self;
importScripts(/* dependencies here */);
/* my code */
Dans mon cas, j'essayais d'utiliser la bibliothèque ES6-Promise: https://github.com/jakearchibald/es6-promise#readme