Ответ 1
Этот код должен находиться внутри рабочего script. Сам рабочий создается с помощью нового объекта Worker
- см. Начало работы в учебнике.
Код, который вы связали, находится внутри созданного рабочего здесь.
Почему я продолжаю получать эту ошибку?
Я должен использовать эту глобальную функцию правильно?
http://www.html5rocks.com/en/tutorials/workers/basics/
Я использую хром.
Я использую https://code.google.com/p/bitjs/ и начинается с
importScripts('io.js');
importScripts('archive.js');
Этот код должен находиться внутри рабочего script. Сам рабочий создается с помощью нового объекта Worker
- см. Начало работы в учебнике.
Код, который вы связали, находится внутри созданного рабочего здесь.
Когда вы создаете рабочего, он фактически выполняется дважды. Первый проход находится в контексте глобального объекта "window" (что означает, что у вас есть доступ ко всем функциям объектов окна). Второй вызов осуществляется в контексте рабочего, у которого есть другой глобальный объект, где существует "importScripts".
// proper initialization
if( 'function' === typeof importScripts) {
importScripts('script2.js');
addEventListener('message', onMessage);
function onMessage(e) {
// do some work here
}
}
Обратите внимание, что addEventListener находится внутри оператора if. Если вы разместите его за его пределами, ваш обратный вызов будет зарегистрирован дважды. Однажды в "окне" глобально и один раз на рабочем глобальном.
Счастливое кодирование!
Я тоже столкнулся с этой ошибкой. В моем случае это потому, что я тестирую код с помощью Karma/Jasmine. Из-за рамки тестирования файл worker.js также загружается основным потоком.
Я избегал этой ошибки путем wrappig файла worker.js с помощью:
if( 'undefined' === typeof window){
importScripts('workerscript2.js');
...
}
Пожалуйста, обратитесь к комментарию ниже Роба, который предлагает альтернативное решение.