RxJS: чанк и задержка в большом наблюдаемом массиве - PullRequest
1 голос
/ 16 мая 2019

Попытка превратить действительно большой массив объектов в куски по 100 объектов и подождать 10 секунд, прежде чем испустить следующие 100 объектов. Набор данных поступает из HTTP-запроса.

Вот что у меня сейчас есть

const { Subject, from, of } = require('rxjs');
const { bufferCount, concatMap, flatMap, mergeAll, delay } = require('rxjs/operators');

from(hugeArray)
    .pipe(
        bufferCount(100),
        concatMap(txn => of(txn).pipe(delay(10000))),
        mergeAll(),
        flatMap(data => from(data))
    )
    .subscribe(txns => console.log(txns));

Кажется, это не работает, так как консоль ничего не записывает. Любая помощь будет оценена.

1 Ответ

1 голос
/ 16 мая 2019

После моего комментария:

рабочий образец стекаблица

Код - в основном удаляются только строки mergeAll() и flatMap(...) из pipe.

import { from, of } from 'rxjs';
import { tap, bufferCount, concatMap, delay } from 'rxjs/operators';

from(generateHugeArray(100)).pipe(
  bufferCount(10),
  concatMap(txn => of(txn).pipe(delay(3000))),
  tap(h => console.log('chunk: ', h))
).subscribe();



// helper function
function generateHugeArray(size) {
  const arr = [];

  for(let i = 0; i < size; i++) {
    arr.push(i + (Math.random() + '').substring(2,4));
  }

  return arr;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...