如何通过简单的Rxjs缓冲一个observable?

时间:2017-01-04 17:32:01

标签: javascript node.js rxjs reactive-programming rxjs5

我想用一些任意(但简单)的标准来缓冲一个可观察量。我在这里设置了一个简单的例子:

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

Bin here

尝试使用filter执行此操作只会生成一个空数组。我期待一个[1,2,3]数组,但这似乎不是它的工作原理。缓冲区的所有文档都使用异步事件,如计时器,但这不是我想要的。我只想基于我决定的一些任意标准来取最后n项。

非常感谢帮助!

2 个答案:

答案 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有效地解决了这个问题。