Разбить массив w / rx js и переподписать после завершения - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть массив, я делю его на кратный блок с задержкой на 5 миллисекунд, с помощью операторов rx js (scan, concatMap, repeat, map). Я сделал это

* 1002. * здесь:
(data: any[]) =>
from(
    Array.from({ length: Math.ceil(data.length / 5) }, (_v, k) => k + 1)
).pipe(
    scan((_acc, curr) => curr * 5, 0),
    map((index: number) => data.slice(index - 5, index)),
    concatMap((item) => of(item).pipe(delay(5000))),
    repeatWhen(_=> interval(5000))
);

Как пропустить (избежать) дополнительную задержку в 5000 мс (задержка, repeatWhen) после завершения наблюдения?

Если вместо этого я использую оператор повтора, я получение превышения максимального размера стека вызовов ошибка

1 Ответ

0 голосов
/ 24 апреля 2020
import { from, of } from 'rxjs';
import { bufferCount, delay, concatMap } from 'rxjs/operators';

const people = new Array(100).fill({}).map((v, i) => {
  return {firstNname: 'firstName-' + i, lastName: 'lastName-'+i, id:i}
}
  )
const arraySource = from(people);

const subscribe = arraySource
.pipe(
  bufferCount(5),
  concatMap((array) => of(array).pipe(delay(5000)))
)
.subscribe(val => console.log(val));

Stackblitz

...