Nest.js Rxjs tap, map

이건선·2023년 7월 4일
0

Node.js

목록 보기
32/32

tap

RxJS의 tap 연산자는 Observable이 내보내는 각 아이템에 대해 부수 효과(side effect)를 가하는데 사용됩니다. 부수 효과란, 함수의 결과에 영향을 주지 않으면서 함수 실행과 관련된 작업을 말합니다.

tap 연산자는 주어진 함수를 실행하지만, 이 함수의 결과를 무시하고 원래의 아이템을 그대로 통과시킵니다. 즉, tap은 Observable의 아이템에 대한 작업을 수행하지만, 그 작업의 결과는 Observable의 출력에 영향을 주지 않습니다. 이런 특성 때문에 tap 연산자는 로깅, 디버깅, 값의 검증 등에 유용하게 사용됩니다.

예를 들어, 아래와 같이 tap 연산자를 사용할 수 있습니다.

import { of } from 'rxjs';
import { tap } from 'rxjs/operators';

of(1, 2, 3)
  .pipe(tap(value => console.log('before:', value)))
  .subscribe(value => console.log('after:', value));

이 코드는 각각의 값에 대해 'before' 로그를 출력한 후, 'after' 로그를 출력합니다. 즉, tap 연산자를 통해 'before' 로그를 출력하는 부수 효과를 가하되, Observable의 아이템에는 영향을 주지 않고 그대로 통과시킵니다.

map

RxJS의 map 연산자는 Observable이 발행하는 각 아이템에 변환 함수를 적용하는데 사용됩니다. 이는 JavaScript의 Array에 적용하는 map 함수와 아주 유사한 개념입니다.

map 연산자를 통해 각 아이템에 대한 작업을 수행하고, 그 결과를 새로운 아이템으로 반환합니다. 이렇게 반환된 새로운 아이템들은 새로운 Observable의 아이템이 됩니다.

예를 들어, 아래와 같이 map 연산자를 사용할 수 있습니다.

import { of } from 'rxjs';
import { map } from 'rxjs/operators';

of(1, 2, 3)
  .pipe(map(value => value * 2))
  .subscribe(value => console.log(value));

이 코드는 각 아이템에 대해 value * 2라는 변환 함수를 적용하고, 그 결과를 새로운 Observable의 아이템으로 반환합니다. 즉, 1, 2, 3을 발행하는 원래의 Observable은 map 연산자를 통해 2, 4, 6을 발행하는 새로운 Observable로 변환됩니다. 이런 특성 때문에 map 연산자는 Observable의 아이템에 대한 변환을 필요로 하는 다양한 상황에서 사용됩니다.

profile
멋지게 기록하자

0개의 댓글