Я получаю работу своего веб-рабочего в букмаркете. Код находится в той же папке, что и вызывающий код, я не могу явно загружать рабочий код, поскольку он загружается с помощью функции importScripts
в файле worker.js.Загрузка веб-рабочих в закладках
Я создаю рабочий, как так
if(typeof(Worker) !== "undefined") {
worker = new Worker('worker.js');
}
тогда я называю работника как так
worker.postMessage({'cmd': 'start', 'grabRate': grabRate});
, который должен вызвать функцию в моем файле рабочего
self.addEventListener('message', function(e) {
console.log("worker message");
var data = e.data;
switch (data.cmd) {
case 'start':
console.log("start from worker");
...
Я не» t см. любые сообщения отладки в консоли, сообщающие мне, что «сообщение» было вызвано в рабочем. Я загружаю только код, который вызывает worker.js (в функции загрузчика букмарклета), поскольку он загружается функцией new Worker
(если я также включил файлы в функцию загрузчика, я мог видеть файл, но функция все еще не вызывается). Я не вижу рабочие файлы в списке источников отладки Chrome или других файлов, загруженных с помощью функции importScripts
.
Объект работника не кажется пустым на то, что я вижу: [. Он имеет прототип, а также два свойства onerror и onmessage. –
Где вы видите нулевой объект? Из вывода кажется, что вы получаете обычный объект WebWorker, но без привязок к ним сейчас. – Sirko
Sirko, Stranded Kid, ваше право, может быть, я немного преждевременно, думая, что рабочий еще не загружен, возможно, что-то еще чтобы сообщения не работали, я отлаживаю их сейчас. – ejectamenta