Глобальная переменная в веб-работнике

Я использую этого веб-работника, в котором объявлена ​​глобальная переменная. Могу ли я получить доступ к тому же (Глобальная переменная в работнике 1) во вновь созданном веб-работнике (работник 2)?

Когда я пытался использовать jQuery в веб-работнике, я получаю сообщение об ошибке "окно не определено". Есть ли способ использовать JQuery в Web Worker?

importScripts('JQuery-latest.js');

function fetch_ajax(url) {
  $.Ajax({
    тип: 'GET', 
    URL: URL,
    success: function(response) {
    PostMessage(ответ);  


    }
  });
}

fetch_ajax('test.txt');

2 ответа

Решение

Веб-работники не имеют window объект.

Чтобы получить доступ к глобальному состоянию, используйте self вместо этого код, который будет работать как в основном потоке, так и в рабочем.

Но обратите внимание, что вы все равно не сможете получить доступ или манипулировать родителем DOM (например, получить window.jQuery с помощью self.jQuery).

Пока главное окно темы self указывает на объект Window в рабочих потоках self указывает на отдельный WorkerGlobalScope объект.

Основываясь на подсказке @buley, я сделал это:

var window = self;

importScripts(/* dependencies here */);

/* my code */

В моем случае я пытался использовать библиотеку ES6-Promise: https://github.com/jakearchibald/es6-promise

Другие вопросы по тегам