获取RxJS Observable的最后两个值之间的差异

时间:2015-07-08 16:39:45

标签: javascript rxjs

我有一个可观察的跟踪滚动位置

 const scroll = Observable
  .fromEvent(document, 'scroll')
  .map(e => window.pageYOffset)
  .startWith(0)

我希望有第二个observable跟踪滚动增量(newScroll - lastScroll)

const scrollDelta = scroll
  // ???
  .subscribe(delta => console.log('delta:', delta) )

如何实现这样的事情? 我试过扫描没有成功。 THX

2 个答案:

答案 0 :(得分:28)

使用pairwise

scroll
    .pairwise()
    .map([a, b] => b - a);

答案 1 :(得分:8)

老问题,但要为RxJS版本5添加信息,其中API表面有所改变,我花了一些时间才找到答案:相当于pairwise将是bufferWithCount(2,1)(v4 )或bufferCount(2,1)(v5)。