Я хочу загрузить файл в webworker, но это не простой файл javascript.Это класс.Таким образом, вместо записи URL файла JavaScript в новом Worker (filename.js);
Я инициализирую класс написанием нового Worker (new ClassName ());
Он читает файл и загружает его правильно.Он даже показывает сообщение console.log в конструкторе.Но когда элемент управления перемещается в метод postMessage в основном файле, он выдает ошибку.
Приложение, над которым я работаю, имеет очень сложную структуру.У нас есть общий модуль, который содержит несколько классов, которые выполняют некоторые общие функции по всему приложению.Функциональность, над которой я работаю, может вызвать проблемы с производительностью, если я выполню ее непосредственно в приложении.Итак, я загружаю его в веб-работника.Так как это класс, поэтому я должен вызывать его, используя новое ключевое слово.Поэтому вместо:
var ww = new Worker(filename.js);
я пишу:
var ww = new Worker(new ClassName());
Теперь он вызывает класс, он записывает в журнал оператор, написанный в конструкторе, но когда в основном файле он выполняет postMessagejavascript выдает ошибку и останавливает выполнение метода.
См. код ниже:
mainFile.js
var ww = new Worker(new CommonWebWorker());
ww.postMessage('LOAD');
ww.onmessage = function (e) {
console.log(e.data);
}
CommonWebWorker.js
'use strict';
class CommonWebWorker {
constructor() {
console.log("commonWebWorker invoked");
this.onmessage = function (e) {
this.postMessage((e.data === 'LOAD' ? 'Loading...' : 'Loading Error'));
}
}
}
module.exports = CommonWebWorker;
Я ожидаю, что файл будет загружаться в фоновом режиме через WebWorker, но на самом деле он ломается и выбрасывает приведенную ниже ошибку
GET http://localhost:3000/[object%20Object] 404 (Не найдено)
Любойвид помощи очень ценится.