[RxJS] bufferCount 써보기

2022. 5. 8. 20:45개발/Node & Javascript

728x90
반응형

개요

  • stream으로 값을 불러오는 경우 여러개의 값을 bulk로 처리하고 싶을 때가 있다.
  • 이 때 bufferCount를 통해서 여러값을 처리하도록 만들어 보자.

예제

  1. test generator를 생성한다.

const sleep = async function (ms: number): Promise<void> {
  return new Promise(resolve => {
    setTimeout(resolve, ms);
  });
}

const doBackground = async (count: number, subscriber: Subscriber<number>) => {
  for (let i = 0; i < count; i++) {
    if (count % 4 == 0) {
      await sleep(10);
    };

    subscriber.next(i);
  }

  subscriber.complete();
};

const generator = (count: number): Observable<number> => {
  return new Observable( subscriber => {
    doBackground(count, subscriber).then(console.log).catch(console.error);
    return ;
  });
};
  1. bufferCount를 통해서 묶어서 처리해준다.
from(generator(1000))
  .pipe(
    bufferCount(100),
    map((items) => console.log(items)),
  ).subscribe({
    error: (error) => console.error('error', error),
    complete: () => console.log('end')
  });
728x90
반응형