Rxjs 在内部可观测上使用takeUntil
如何更好地编写此代码段 我试图实现的是每次Rxjs 在内部可观测上使用takeUntil,rxjs,reactive-programming,Rxjs,Reactive Programming,如何更好地编写此代码段 我试图实现的是每次eventGenerator$发出某个消息时启动一个新的轮询(并放弃上一个轮询),但其他通知程序也可以放弃轮询(anotherEvent$) 基本规则之一是不在subscribe()方法中订阅其他订阅。 对于这个switchMap操作符,链接它听起来是个不错的选择,但是如果take until被使用并且另一个事件$发出,它将取消整个订阅,而不仅仅是轮询部分,因此,将不再处理另一个发出的eventGenerator,也不会创建另一个计时器。您可以重新构造运
eventGenerator$
发出某个消息时启动一个新的轮询(并放弃上一个轮询),但其他通知程序也可以放弃轮询(anotherEvent$
)
基本规则之一是不在subscribe()方法中订阅其他订阅。
对于这个
switchMap
操作符,链接它听起来是个不错的选择,但是如果take until
被使用并且另一个事件$
发出,它将取消整个订阅,而不仅仅是轮询部分,因此,将不再处理另一个发出的eventGenerator
,也不会创建另一个计时器。您可以重新构造运算符:
this.eventGenerator$.pipe(
switchMap(() => timer(0, 1000).pipe(
switchMap(() => this.service.getSomething()),
takeUntil(this.anotherEvent$),
),
).subscribe(...);
我提出这个问题。。。我像你建议的那样拥有它,但是
另一个事件$
是ReplaySubject,所以它总是在发出后立即取消订阅,因此我认为我的想法是错误的。
this.eventGenerator$.pipe(
switchMap(() => timer(0, 1000).pipe(
switchMap(() => this.service.getSomething()),
takeUntil(this.anotherEvent$),
),
).subscribe(...);