我有一些我想要扼杀的祝酒词。我尝试使用缓冲区,然后我在数组中收到一堆消息,而我真正喜欢的是消息只是留在流中直到我要求它们。我最终做的是用间隔流压缩我的消息流
var messageStream = Rx.Observable.FromEvent(..., 'click');
var intervalStream = Rx.Observable.interval(5000);
messageStream.Zip(intervalStream, (x,_)=>x).subscribe(showToast(x));
有更优雅的方法吗?
答案 0 :(得分:2)
看看controlled。它使您可以排队值,等待.request(x)
x值。要谨慎使用,因为这意味着内存将用于缓冲值,内存不是无限的。这也可能是一个很好的阅读:backpressure
答案 1 :(得分:0)
这是一种使用缓冲区的方法,然后是flatMap来展开数组:
var messageStream = Rx.Observable.FromEvent(..., 'click');
var intervalStream = Rx.Observable.interval(5000);
messageStream
.buffer(intervalStream)
.flatMap( function (x) {
return Rx.Observable.from(x)
})
.subscribe( function (x) {
showToast(x)
})