问题描述
我有一项服务正在Angular应用中用于大量计算。我正在将@injectable
与服务类一起使用。我也想在网络工作者中使用该类,但是它引发了dom
相关的错误。重用服务代码的最佳方法是什么?我可以编写一个普通的类,但希望避免重复编写代码,因为应用程序中仍然需要它。
我想做这样的事情:
// web worker
import {Service} from 'app.service.ts';
addEventListener('message',({ data }) => {
const response = new Service().callServiceMethod(data);
postMessage(response);
});
解决方法
可能有比这更好的答案,因为这是一种解决方法,但需要最少的维护,并且功能保留在代码中:
我正在使用非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
}
}