我有一个服务来处理一些数据获取,我正在尝试使用 tsyringe,创建服务的函数被多次调用(我对此无能为力),所以它创建了许多服务实例。我试图将它包装在“container.isRegistered”检查中,但是当我这样做时,它根本不会注册服务。
到目前为止,我所拥有的是:
@singleton()
@injectable()
export class Service implements IService {
constructor(@inject('arg1') arg1: string, @inject('arg2') arg2: string) {
}
然后我在另一个文件中注册它:
if (!container.isRegistered('arg1', true)) {
container.register('arg1', {useValue: this.arg1});
}
if (!container.isRegistered('arg2', true)) {
container.register('arg2', {useValue: this.arg2});
}
if (!container.isRegistered('IService', true)) {
container.register('IService', {useClass: Service});
}
在另一个文件中,我像这样解决它:
this.service = container.resolve('IService');
尝试检查它是否已注册会完全停止服务的注册,但如果没有,我将运行多个实例。该服务主要处理数据获取,它只应该在启动时获取一些数据,但我看到很多调用都是这样做的。我在服务构造函数中放了一些日志,我可以看到它被创建了很多次。
谢谢你的帮助!