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

标签 javascript rxjs observable requestanimationframe

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

  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++));
}

最佳答案

如果您想限制 requestAnimationFrame 的滚动事件,您可以使用 throttleTime(0,animationFrame) 运算符而不是 Observable.of(0,animationFrame)

示例

Observable.fromEvent(window, 'scroll')
    .throttleTime(0, animationFrame)

更新:

RxJS 6

import { fromEvent, animationFrameScheduler } from "rxjs";
import { throttleTime } from "rxjs/operators";

fromEvent(window, "scroll")
  .pipe(throttleTime(0, animationFrameScheduler))

关于javascript - 如何在 rxjs 中组合 Scheduler.animationFrame 和 fromEvent(window, 'scroll' ) 流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46621557/

相关文章:

php - 拖放保存到 mysql 优化

javascript - 如何在CSS文件中设置高度时获取div的高度?

javascript - 为什么从 JavaScript 调用 iframe

angular - 如果每个 observable 都有新数据,我如何才能一次订阅 angular2 中的多个 observable 并等待?

javascript - 在 lodash 中使用双 groupBy

javascript - 为什么可观察源在竞赛(或合并)中使用时不发出值,但在我手动订阅它时发出值

javascript - 可观察中的数据集未在模板中更新

angular - 元素包含不起作用(Angular 2+,RxJS)

javascript - 如何将 canvas.toblob() 回调转换为 Observable

JavaFX:如何将 Button 属性绑定(bind)到线程状态?