#angular #angular-services #web-worker
#angular #службы angular-services #веб-работник
Вопрос:
У меня есть служба, которая используется для тяжелых вычислений в приложении Angular. Я использую @injectable
класс services. Я бы хотел использовать этот класс и в веб-работнике, но он выдает dom
связанные ошибки. Каков наилучший способ повторного использования кода службы? Я мог бы написать простой класс, но хотел бы избежать дублирования кода, поскольку он все еще необходим внутри приложения.
Я бы хотел сделать что-то вроде этого:
// web worker
import {Service} from 'app.service.ts';
addEventListener('message', ({ data }) => {
const response = new Service().callServiceMethod(data);
postMessage(response);
});
Ответ №1:
Может быть лучший ответ, чем этот, поскольку это своего рода обходной путь, но также требует минимального обслуживания, а функциональность сохраняется в коде:
Я использую класс, отличный от dom, и класс angular
..............
class NonDom {
exampleMethod() {
// do stuff
}
}
.............
import NonDom from './NonDom';
class AngularWithDom {
const nonDomClass = new NonDom();
exampleMethod() {
return nonDomClass.exampleMethod();
}
domMethod() {
// do stuff with dom here
}
}
Комментарии:
1. импорт класса, отличного от dom, в web worker работает отлично. Класс angular injectable также отлично работает в том виде, в каком он есть в коде.