javascript - Rxjs: block 和延迟流?

标签 javascript rxjs

简而言之,尝试将一个非常大的数组分成 10 个 block ,并在发出下一个 10 之前等待 5 秒。

这是我目前拥有的

Rx.Observable
   .from(hugeArray)
   .bufferCount(10) 
   .delay(5000) //want to wait 5 secs
   .flatMap(e => e) // this needs to go after to flatten the array, buffer spits out arrays of entries
   .flatMap( (data, index) => Rx.Observable.create(observer => {
       // going to render stuff here
       observer.onNext(data)
       observer.onCompleted();  

   }))
   .subscribe(val => console.log('Buffered Values:', val));

只是尝试每 5 秒执行 10 个 block ,只能执行初始延迟,然后它会发出其余部分。

最佳答案

您的链只是一次发出所有内容,然后安排每个 block 在同一时间开始等待 5 秒,因此所有 block 的延迟都在同一时刻结束。

解决方案可能是使用 concatMap() 一个一个地订阅每个 Observable。

Rx.Observable
    .from(hugeArray)
    .bufferCount(10)
    .concatMap(data => Rx.Observable.of(data).delay(5000))
    .flatMap(e => e) // or mergeAll() or concatAll()
    .flatMap( (data, index) => Rx.Observable.create(observer => {
        // going to render stuff here
        observer.onNext(data);
        observer.onCompleted();
    }))
    .subscribe(val => console.log('Buffered Values:', val));

关于javascript - Rxjs: block 和延迟流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41403500/

相关文章:

angular - 使用 Observables/RxJS 合并 Angular 中的两个依赖 API 调用

angular - 具有 Angular http 请求的异步管道的好处

javascript - 使用 Ajax 调用返回 JSON 文件的 Highcharts

javascript - Jquery 读取编号组中选择下拉列表的数组

javascript - AngularJS Controller 在应用程序上触发两次

javascript - 替换数据 block 中的多个模式

angular - 在模板中,我如何绑定(bind)到由 observable 传递的对象的深层嵌套属性?

Javascript 应用程序 - 加载数据

angular - 错误 : <spyOn> : fromEvent is not declared writable or has no setter

typescript - 关于 rxjs debounceTime 的困惑