【发布时间】:2022-01-23 15:36:52
【问题描述】:
我有一个包含在activatedRoute.data.example 中的Observable 数组,我想订阅发出的最新值。
private data$ = forkJoin(
this.activatedRoute.data.pipe(
map(({ examples }) => examples)
)
);
ngOnInit(): void {
this.data$.subscribe((v) => console.log(v));
}
这里的每一个example都是一个http请求:
this.http.get<Example>(`${this.baseUrl}`, { params: query })
但我在网络浏览器的选项卡中既没有看到log,也没有看到对后端的 API 调用。
【问题讨论】:
-
ForkJoin 在您的情况下不起作用,它正在发出值,当所有传递的 observables 都将完成时。只需将其删除并重试。
-
非常感谢。如果你有时间,还有一个问题:有没有一种方法可以确定是否所有的 observables 都完成了?
-
当你订阅一个 observable 时,有 3 个参数函数。
next、error、complete。调用complete函数就知道订阅完成了。 -
请注意,当 HTTP 调用完成时,HTTP 客户端会自动完成订阅,这通常不会发生在其他可观察对象(路由器事件、存储订阅等)中
-
@StPaulis 这是冷热观测值的区别。