Веб-работник не работает - PullRequest
1 голос
/ 05 июня 2011

У меня есть следующий код:

var stressWorker = new Worker("./test/webworkers/worker.js");
stressWorker.onmessage = function(event){
    alert(event.data);
};
stressWorker.onerror = function(event){
    throw new Error(event.message + " (" + event.filename + ":" + event.lineno + ")");
};

worker.js:

onmessage = function(e){
   postMessage("test");
}

Сценарий находит файл 'worker.js', но фактически не запускает его.Что я делаю не так?

PS.Я размещаю оба скрипта с помощью wamp и использую chrome

Ответы [ 3 ]

2 голосов
/ 05 июня 2011

worker.js не будет ничего делать, пока не получит сообщение. Я не вижу, куда вы отправляете сообщение. Вам нужно что-то вроде stressWorker.postMessage(...) где-то.

0 голосов
/ 06 августа 2012

Одна важная вещь, которую вы должны помнить. Если вы запускаете скрипты с тем же источником и используете chrome, вы должны запустить chrome с флагом - allow-file-access-from-files или Вы должны запуститьприложение на локальном сервере .

см. код

 var stressWorker = new Worker("../test/webworkers/worker.js");
    stressWorker.onmessage = function(event){
        alert(event.data);
    };
    stressWorker.postMessage("Hello there");
    stressWorker.onerror = function(event){
        throw new Error(event.message + " (" + event.filename + ":" + event.lineno + ")");
    };

Теперь вы получите ответ от работника.".." Я подозреваю, что путь неверен.

0 голосов
/ 05 июня 2011

Вы уверены, что ваш браузер поддерживает эту конкретную функцию HTML5?

В этой статье есть много способов проверить поддержку каждой функции.Тест для Worker:

return !!window.Worker;

Редактировать : На мой взгляд, проблема в вашем коде или он не может найти файл.Ваш код очень похож на в этом примере за исключением того, что код файла .js выглядит следующим образом: self:

self.onmessage = function(e) {  
    self.postMessage("Hello " + e.data);  
};  

Это должно быть достаточно просто для вас, чтобы попробоватьи посмотрим, не здесь ли этот кусок.

...