在 angular 中处理依赖可观察订阅的最佳方法是什么?
What is the best way to handle dependent observable subscription in angular?
我有一个发出一些 id 的可观察对象,我必须进行另一个使用发出的 id 的订阅。处理此订阅的最佳方式是什么。我知道一个解决方案,比如在第一个可观察订阅中订阅第二个可观察订阅。如下图-
observable1$.subsctipe(id=>{
this.store.pipe(select(some_selector, id)).subscribe(value=>{
//some business
})
})
这个方案会不会有内存泄漏之类的不良影响?还有其他更好的方法吗?
这件事的坏处是您需要跟踪两个订阅。您必须同时取消订阅才能清理。
observable1$.pipe(mergeMap(id =>
this.store.pipe(select(some_selector, id))
).subscribe(value => {
//some business
})
最好这样做。然后,如果组件销毁,您只有一个订阅要发布。您当前的实施情况并非如此。
如果 observable1$
已经发出新的 id
,我还假设您不想继续用旧的 id
收听您的商店。如果是这样,您可以将 mergeMap
替换为 switchMap
。顺便说一句 flatMap
是 mergeMap
.
的别名
我有一个发出一些 id 的可观察对象,我必须进行另一个使用发出的 id 的订阅。处理此订阅的最佳方式是什么。我知道一个解决方案,比如在第一个可观察订阅中订阅第二个可观察订阅。如下图-
observable1$.subsctipe(id=>{
this.store.pipe(select(some_selector, id)).subscribe(value=>{
//some business
})
})
这个方案会不会有内存泄漏之类的不良影响?还有其他更好的方法吗?
这件事的坏处是您需要跟踪两个订阅。您必须同时取消订阅才能清理。
observable1$.pipe(mergeMap(id =>
this.store.pipe(select(some_selector, id))
).subscribe(value => {
//some business
})
最好这样做。然后,如果组件销毁,您只有一个订阅要发布。您当前的实施情况并非如此。
如果 observable1$
已经发出新的 id
,我还假设您不想继续用旧的 id
收听您的商店。如果是这样,您可以将 mergeMap
替换为 switchMap
。顺便说一句 flatMap
是 mergeMap
.