当在Angular中使用observable时,我的理解是,除非订阅了observable,否则它不会运行。然而,当观察rxjs对代码的影响时,我们通常会这样做:
getProcess$ = createEffect(() =>
this.actions$.pipe(
ofType(ProcessActions.getProcessIdSuccess),
switchMap((action) =>
this.processService.getProcess(action.payload).pipe(
delay(5000),
map((data: any) => ProcessActions.getProcessSuccess({ payload: data }))
)
)
)
);
代码中没有一个被调用的subscribe((方法,这让我有些困惑。在没有订阅的情况下,内部可观察的代码是如何运行的?谢谢
NgRx在后台负责订阅。这就是为什么我们不必弄清楚何时/如何订阅我们在库中使用的各种Observable。
顺便说一句,只要可能(通常是这样(,请严格避免在TS中订阅Observables。一般来说,您希望在某个模板中使用async
管道。