gpt4 book ai didi

angular - RXJS:跳过由其他可观察对象触发的可观察对象的值

转载 作者:行者123 更新时间:2023-12-04 01:28:40 24 4
gpt4 key购买 nike

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

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

现在它会在每次 mySubject 发射时停止发射源 10 秒。

问题是,如果再次发出 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(...);

关于angular - RXJS:跳过由其他可观察对象触发的可观察对象的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61393614/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com