我想用一些任意(但简单)的标准来缓冲一个可观察量。我在这里设置了一个简单的例子:
const observable = Rx.Observable.from([1,2,3])
const filtered = observable.filter((n) => n === 3);
observable
.buffer(filtered)
.subscribe((n) => {
// Why is this empty?
console.log(n);
});
尝试使用filter
执行此操作只会生成一个空数组。我期待一个[1,2,3]
数组,但这似乎不是它的工作原理。缓冲区的所有文档都使用异步事件,如计时器,但这不是我想要的。我只想基于我决定的一些任意标准来取最后n项。
非常感谢帮助!
答案 0 :(得分:0)
您的订阅在发布值后发出。如果你想要它工作:
const observable = new Rx.Subject()
const filtered = observable.filter((n) => n === 3);
filtered
.buffer(filtered)
.subscribe((n) => {
console.log(n);
});
Rx.Observable.from([1,2,3]).subscribe(observable);
答案 1 :(得分:0)
根据olsn的评论,似乎这是Rxjs中的一个错误。改为v4有效地解决了这个问题。