Rxjs:块和延迟流?

7 javascript rxjs

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

这是我现在拥有的

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));
Run Code Online (Sandbox Code Playgroud)

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

mar*_*tin 6

您的链仅一次发出所有内容,然后安排每个块在同一时间开始等待5秒钟,因此所有块在同一时刻都经过了延迟。

解决方案可能是使用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));
Run Code Online (Sandbox Code Playgroud)