如何在rxjs中结合Scheduler.animationFrame和fromEvent(window,'scroll')流?

Mat*_*ood 0 javascript observable rxjs requestanimationframe

我有两个观测值Observable.of(0, animationFrame)Observable.fromEvent(window, 'scroll')。我想将它们组合在一起,以便renderScrollBar(event)仅在animationFrame的刻度上调用my 。

  Observable.fromEvent(window, 'scroll')
      .map((event: any) => event.currentTarget)
      .subscribe((event) => {
        this._renderScrollBar(event);
      });
  let x = 0;
  Observable.of(0, animationFrame)
      .repeat()
      .takeUntil(Observable.timer(1000))
      .subscribe(() => console.log(x++));
}
Run Code Online (Sandbox Code Playgroud)

小智 6

如果您想将滚动事件限制为requestAnimationFrame,则可以使用throttleTime(0, animationFrame)operator代替Observable.of(0, animationFrame)

Observable.fromEvent(window, 'scroll')
    .throttleTime(0, animationFrame)
Run Code Online (Sandbox Code Playgroud)