简而言之,尝试将一个非常大的数组分成 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/