angular - 为什么不订阅 NgRx 效果中的可观察对象?
问题描述
在 Angular 中使用 observables 时,我的理解是 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() 方法,这让我有些困惑。内部 observable 中的代码如何在没有订阅的情况下运行?谢谢。
解决方案
NgRx 在后台负责处理订阅。这就是为什么我们不必弄清楚何时/如何订阅我们在库中使用的各种 Observable。
顺便说一句,只要有可能(通常是这样),请严格避免在您的 TS 中订阅 Observables。一般来说,您想async
在某个地方的模板中使用管道。
推荐阅读
- elasticsearch - 没有时间聚合的 Kibana 可视化
- node.js - 如何取消初始化 NPM?
- javascript - 在 bmpnjs 中动态添加 svg
- c++ - 尝试从 Bjarne Stroustrup PPP2 图形章节构建文件时出现链接器错误
- c# - C# 在我的代码中遇到第 7 行的问题
- python - matplotlib.widgets.Slider 带直方图
- c++ - 我的程序不想在 DLL 调用后写入文本文件
- c# - 通过 API Revit 检查文件是否存在
- pandas - AttributeError:模块“numba”没有属性“targets”
- mongodb - 猫鼬查询计数并返回一些结果列表