比方说,我有一个像这样的数组创建的Observable流:
const items: Items = [{},{},{},{},{},...];
const obs$ = from(items).pipe(
mergeMap(items => {
return this.getData(items);
})
);
按照此代码的说法,将为数组中的每个项目调用getData()
。我想做的是将items数组划分为N个相等大小的数组,然后改为发出这些数组。然后将使用单独的数组而不是原始项目数组中的每个项目调用getData()
。
基本上,我需要toArray()
运算符的一种变体,但只在我预定义的部分流中使用。
答案 0 :(得分:10)
您需要具有多种变体的缓冲区运算符,它们是:buffer, bufferCount, bufferTime, bufferToggle, bufferWhen
。 Buffer Official Documentation
例如,在您将案例分为3个大小的数组的情况下,将是:
const items: Items = [{},{},{},{},{},...];
const obs$ = from(items).pipe(
bufferCount(3),
mergeMap(items => {
return this.getData(items);
})
);