尝试将非常大的对象阵列转换成100个对象的块,并等待10秒,然后发射下一个100个对象。 数据集来自HTTP请求。
这是我目前拥有的
const { Subject, from, of } = require('rxjs');
const { bufferCount, concatMap, flatMap, mergeAll, delay } = require('rxjs/operators');
from(hugeArray)
.pipe(
bufferCount(100),
concatMap(txn => of(txn).pipe(delay(10000))),
mergeAll(),
flatMap(data => from(data))
)
.subscribe(txns => console.log(txns));
这似乎不起作用,因为控制台未记录任何内容。 任何帮助将不胜感激。
答案 0 :(得分:1)
在我的评论之后:
代码-基本上仅从mergeAll()
中删除了flatMap(...)
和pipe
行。
import { from, of } from 'rxjs';
import { tap, bufferCount, concatMap, delay } from 'rxjs/operators';
from(generateHugeArray(100)).pipe(
bufferCount(10),
concatMap(txn => of(txn).pipe(delay(3000))),
tap(h => console.log('chunk: ', h))
).subscribe();
// helper function
function generateHugeArray(size) {
const arr = [];
for(let i = 0; i < size; i++) {
arr.push(i + (Math.random() + '').substring(2,4));
}
return arr;
}