【发布时间】:2017-12-21 20:13:33
【问题描述】:
我有一个 Observable:
1----2----3----3----2----1-|
我用
.bufferCount(2, 1)
输出是
--[1,2]-[2,3]-[3,3]-[3,2]-[2,1]-|
然后我链
.filter(twoEmissions => twoEmissions[0] !== twoEmissions[1])
这使得:
--[1,2]-[2,3]-------[3,2]-[2,1]-|
然后我链
.map(twoEmissions => twoEmissions[1])
只留下最新的排放量,所以我的最终输出是:
-----2-----3------------2----1---|
我的问题是在这种情况下省略了第一次发射。 我尝试使用 buffer() insted of bufferCount() 和以下closureNotifier:
bufferClosingNotifier = sourceObservable$
.scan((acc, val, index) => (index), 0)
.filter((index: number) => index === 0 || index > 0 && index % 2 !== 0)
它发出第 1、3、5、7... 发射,但它们不重叠。
我怎样才能有 bufferCount(2, 1) 但无论如何都会发射源 observable 的第一次发射?
【问题讨论】:
-
.startWith(undefined).bufferCount(2, 1) -
谢谢@cartant,帮了大忙!
标签: rxjs observable reactive-programming