为什么不订阅NgRx效果中的可观察对象?

时间:2020-08-02 17:06:39

标签: angular rxjs

在Angular中使用可观察对象时,我的理解是,除非已订阅可观察对象,否则它将不会运行。但是,在查看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 }))
        )
      )
    )
  );

在代码中不存在一个名为subscription()的方法,这对我来说有些困惑。内部可观察的代码如何在不订阅的情况下运行?谢谢。

1 个答案:

答案 0 :(得分:2)

NgRx负责后台的订阅。这就是为什么我们不必弄清楚何时/如何订阅库中使用的各种Observable的原因。

作为简要说明,请尽可能避免在您的TS中订阅Observable。一般来说,您想在模板的某处使用async管道。