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

Uncaught ReferenceError: importScripts не определен

Почему я продолжаю получать эту ошибку?

Я должен использовать эту глобальную функцию правильно?

http://www.html5rocks.com/en/tutorials/workers/basics/

Я использую хром.

Я использую https://code.google.com/p/bitjs/ и начинается с

importScripts('io.js');
importScripts('archive.js');
4b9b3361

Ответ 1

Этот код должен находиться внутри рабочего script. Сам рабочий создается с помощью нового объекта Worker - см. Начало работы в учебнике.

Код, который вы связали, находится внутри созданного рабочего здесь.

Ответ 2

Когда вы создаете рабочего, он фактически выполняется дважды. Первый проход находится в контексте глобального объекта "window" (что означает, что у вас есть доступ ко всем функциям объектов окна). Второй вызов осуществляется в контексте рабочего, у которого есть другой глобальный объект, где существует "importScripts".

// proper initialization
if( 'function' === typeof importScripts) {
   importScripts('script2.js');
   addEventListener('message', onMessage);

   function onMessage(e) { 
     // do some work here 
   }    
}

Обратите внимание, что addEventListener находится внутри оператора if. Если вы разместите его за его пределами, ваш обратный вызов будет зарегистрирован дважды. Однажды в "окне" глобально и один раз на рабочем глобальном.

Счастливое кодирование!

Ответ 3

Я тоже столкнулся с этой ошибкой. В моем случае это потому, что я тестирую код с помощью Karma/Jasmine. Из-за рамки тестирования файл worker.js также загружается основным потоком.

Я избегал этой ошибки путем wrappig файла worker.js с помощью:

    if( 'undefined' === typeof window){
       importScripts('workerscript2.js');
    ...
    }

Пожалуйста, обратитесь к комментарию ниже Роба, который предлагает альтернативное решение.