Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无缓冲的节流流_Javascript_Rxjs - Fatal编程技术网

Javascript 无缓冲的节流流

Javascript 无缓冲的节流流,javascript,rxjs,Javascript,Rxjs,我有一些祝酒词要说。我尝试使用缓冲区,但后来我在一个数组中得到了一堆消息,而我真正想要的是这些消息只是停留在流中,直到我请求它们为止。我最后做的是用一个间隔流压缩我的消息流 var messageStream = Rx.Observable.FromEvent(..., 'click'); var intervalStream = Rx.Observable.interval(5000); messageStream.Zip(intervalStream, (x,_)=>x).subscr

我有一些祝酒词要说。我尝试使用缓冲区,但后来我在一个数组中得到了一堆消息,而我真正想要的是这些消息只是停留在流中,直到我请求它们为止。我最后做的是用一个间隔流压缩我的消息流

var messageStream = Rx.Observable.FromEvent(..., 'click');
var intervalStream = Rx.Observable.interval(5000);
messageStream.Zip(intervalStream, (x,_)=>x).subscribe(showToast(x));

有没有更优雅的方法可以做到这一点。它允许您对值进行排队,等待您请求(x)x值。小心使用,因为这意味着内存将用于缓冲值,内存不是无限的。这也可能是一个很好的阅读:

这里有一种使用缓冲区的方法,然后是一个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) 
    })