如何将RXJS可观察流分成相等大小的N个数组?

时间:2018-11-21 05:36:33

标签: rxjs reactive-programming

比方说,我有一个像这样的数组创建的Observable流:

const items: Items = [{},{},{},{},{},...];
const obs$ = from(items).pipe(
    mergeMap(items => {
        return this.getData(items);
    })
);

按照此代码的说法,将为数组中的每个项目调用getData()。我想做的是将items数组划分为N个相等大小的数组,然后改为发出这些数组。然后将使用单独的数组而不是原始项目数组中的每个项目调用getData()

基本上,我需要toArray()运算符的一种变体,但只在我预定义的部分流中使用。

1 个答案:

答案 0 :(得分:10)

您需要具有多种变体的缓冲区运算符,它们是:buffer, bufferCount, bufferTime, bufferToggle, bufferWhenBuffer Official Documentation

例如,在您将案例分为3个大小的数组的情况下,将是:

const items: Items = [{},{},{},{},{},...];
const obs$ = from(items).pipe(
    bufferCount(3),
    mergeMap(items => {
        return this.getData(items);
    })
);