Как я могу разделить наблюдаемый поток RXJS на равные массивы размера N? - PullRequest
0 голосов
/ 21 ноября 2018

Скажем, у меня есть поток Observable, созданный из массива, например:

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

Поскольку этот код стоит, getData() будет вызываться для каждого элемента в массиве.То, что я хочу сделать, это разделить массив элементов на N одинаковых по размеру массивов, а затем сгенерировать эти массивы.Тогда getData() будет вызываться с отдельными массивами, а не с каждым элементом в массиве исходных элементов.

В основном мне нужен вариант оператора toArray(), но только на тех частях потока, которые я предварительно определил.

1 Ответ

0 голосов
/ 21 ноября 2018

Вам нужен буферный оператор, который имеет несколько вариантов: buffer, bufferCount, bufferTime, bufferToggle, bufferWhen. Официальная документация по буферу

Например, в вашем случае деление массива на 3 размера будет:

const items: Items = [{},{},{},{},{},...];
const obs$ = from(items).pipe(
    bufferCount(3),
    mergeMap(items => {
        return this.getData(items);
    })
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...