Provider通俗点说就是一个用
@Injectable()装饰器注释的类吧
基本用法
用@Injectable()注释一个类
在module中引入service 然后在providers中注入
在Controller就可以使用注入的service了
上面的形式相当于一种语法糖
自定义名称
@Module({
imports: [UserModule],
controllers: [AppController],
providers: [
{
provide: 'Rika',
useClass: AppService,
},
],
})
自定义名称之后要用对应的Inject注入
constructor(@Inject('Rika') private readonly appService: AppService) {}
自定义值
使用useValue
工厂模式
如果服务之间相互有依赖或者逻辑处理,可以使用useFactory
说实话我有点不是很懂 但是想了一下工厂的工作模式 好像又懂了
异步模式
useFactory返回一个promise或者其他异步操作
{
provide: 'sync',
async useFactory() {
return await new Promise((resolve) => {
setTimeout(() => {
resolve('sync');
}, 1000);
});
},
},
这里跟视频学的好像不太一样,视频是加载等1秒我是等他热更新启动等一秒