如何将RXJS Observable流划分为相等的N大小的数组?

ijj*_*jjo 3 reactive-programming rxjs

假设我有一个从数组创建的Observable流,如下所示:

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

正如此代码所示,getData()将为数组中的每个项调用.我想要做的是将items数组分成N个相等大小的数组,然后发出这些数组.然后getData()将使用单个数组而不是原始项数组中的每个项调用.

基本上我需要toArray()运算符的变体,但只需要预先定义的流的部分.

Gog*_*eli 10

您需要具有多种变体的缓冲区运算符,它们是:buffer, bufferCount, bufferTime, bufferToggle, bufferWhen.缓冲官方文档

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

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