带有计时器的RxjsdistingtUntilChanged

pha*_*cic 5 rxjs

有没有一种方法可以将计时器添加到distinctUntilChanged?

在rxjs 6中

of(1, 2, 3, 3, 5, 6)
  .pipe(distinctUntilChanged)
  .subscribe(x => console.log(x)
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有一种方法可以添加一个计时器,以便重复值落在时间范围之外时将发出该重复值,但如果落在该时间范围内则将被忽略。

就像说计时器设置为1000(1s),在这种情况下interval(1000),如果在1s内发出一个重复的值,它将被忽略,但是如果在间隔(1s)之后,则应允许它通过。我希望在这里有意义

另外,如果有更好的方法来做到这一点,distinctUntilChanged我将很高兴地欢迎您。

提前致谢

mar*_*tin 6

windowTime是有用的非常罕见的场合之一。windowTime在一段时间过去之后创建一个新的Subject(所谓的高阶Observable)。然后,您可以使用concatMap将其与链接distinctUntilChanged。这一切都意味着您将distinctUntilChanged每隔1秒创建一个新的:

const subject = new Subject();

subject
  .pipe(
    windowTime(1000),
    concatMap(obs => obs.pipe(distinctUntilChanged())),
  )
  .subscribe(console.log);

subject.next(1);
subject.next(2);

setTimeout(() => subject.next(2), 1200);
Run Code Online (Sandbox Code Playgroud)

观看现场演示:https : //stackblitz.com/edit/rxjs6-demo-pcmrzz?file=index.ts