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(...);