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 秒而不同时发射任何内容,我需要它。
我怎样才能实现这个目标?
恐怕这需要更复杂的解决方案:
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)
| 归档时间: |
|
| 查看次数: |
1783 次 |
| 最近记录: |