службы angular и веб-работники

#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 также отлично работает в том виде, в каком он есть в коде.