RXJS:跳过其他可观察值触发的可观察值

Mos*_*ini 3 observable rxjs angular

我试图实现以下行为:我有一个每秒都会发出的可观察源。如果另一个 observable( ) 发出值,我试图在一段时间内(10 秒)忽略值mySubject。这就是我来的目的:

this.source.pipe(
      takeUntil(this.mySubject),
      repeatWhen((observable) => observable.pipe(delay(10000))),
      tap((x) => console.log(x)),
).subscribe();
Run Code Online (Sandbox Code Playgroud)

现在,每次发射都会停止源发射 10 秒mySubject

问题是,如果再次发射来mySubject重置 10 秒的“计数”并忽略另外 10 秒而不同时发射任何内容,我需要它。

我怎样才能实现这个目标?

mar*_*tin 6

恐怕这需要更复杂的解决方案:

const ignore$ = this.mySubject.pipe(
  switchMap(() => merge(of(true), of(false).pipe(delay(10 * 1000)))),
);

this.source.pipe(
  withLatestFrom(ignore$),
  filter(([value, ignore]) => !ignore),
  map(([value]) => value),
).subscribe(...);
Run Code Online (Sandbox Code Playgroud)