Nestjs Scope 作用域
- 默认为 default,共享类中变量有并发会导致异常修改问题
- 如果修改 service 为
REQUEST
,引用该 service 的地方也会变成REQUEST
,作用域向上传递
- 修改类作用域为
REQUEST
,生命周期失效、定时任务触发失效(可以使用EventEmitter2
进行解耦生命周期和作用域,有些场景下需要配合 redis 锁做 once 一次处理,不然信号可能发送两次)
作用域用法
DEFAULT | 提供程序的单个实例在整个应用中共享。实例生命周期与应用生命周期直接相关。应用启动后,所有单例提供程序都已实例化。默认情况下使用单例作用域。 |
REQUEST | 专门为每个传入的请求创建一个新的提供程序实例。请求完成处理后,该实例将被垃圾回收。 |
TRANSIENT | 临时提供器不在消费者之间共享。每个注入临时提供器的消费者都将收到一个新的专用实例。 |
Loading...