Подтвердить что ты не робот

Глобальная переменная в веб-рабочем

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

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

importScripts('jquery-latest.js');

function fetch_ajax(url) {
  $.ajax({
    type: 'GET', 
    url: url,
    success: function(response) {
    postMessage(response);  


    }
  });
}

fetch_ajax('test.txt');
4b9b3361

Ответ 1

У веб-рабочих нет объекта window.

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

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

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

Ответ 2

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

var window = self;

importScripts(/* dependencies here */);

/* my code */

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