javascript – Rxjs:块和延迟流?

前端之家收集整理的这篇文章主要介绍了javascript – Rxjs:块和延迟流?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

简而言之,尝试将一个非常大的数组块分成10个块并等待5秒,然后发出下一个10.

这是我现在拥有的

  1. Rx.Observable
  2. .from(hugeArray)
  3. .bufferCount(10)
  4. .delay(5000) //want to wait 5 secs
  5. .flatMap(e => e) // this needs to go after to flatten the array,buffer spits out arrays of entries
  6. .flatMap( (data,index) => Rx.Observable.create(observer => {
  7. // going to render stuff here
  8. observer.onNext(data)
  9. observer.onCompleted();
  10. }))
  11. .subscribe(val => console.log('Buffered Values:',val));

只是尝试在5秒内做10个块,只能做一个初始延迟然后它发出其余的.

最佳答案
您的链只是立即发出一切,然后安排每个块同时开始等待5秒,所以在同一时刻所有块的延迟已经过去了.

解决方案可以是使用concatMap()逐个订阅每个Observable.

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

猜你在找的JavaScript相关文章