ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ NestJS ] firstValueFrom과 lastValueFrom의 차이 (feat. RXJS)
    Topic/Node.js | server 2023. 7. 15. 20:38
    반응형

     

    firstValueFrom과 lastValueFrom은 RxJS의 두 가지 함수로, 옵저버블(Observable)을 처리하는 방법에 차이가 있다.

    firstValueFrom

    • firstValueFrom 함수는 옵저버블에서 첫 번째 값을 가져오는 함수이다.
    • 옵저버블이 첫 번째 값을 방출하고 완료되면 해당 값을 반환한다.
    • firstValueFrom은 첫 번째 값을 가져올 때까지 옵저버블의 완료 여부를 기다린다.
    • 만약 옵저버블이 오류를 방출하면 firstValueFrom은 해당 오류를 전달한다.

    firstValueFrom 예시

    import { firstValueFrom } from 'rxjs';
    
    async function fetchData(): Promise<void> {
      const observable = someService.getDataObservable(); // 데이터를 방출하는 옵저버블
    
      try {
        const firstValue = await firstValueFrom(observable);
        console.log('첫 번째 값:', firstValue);
      } catch (error) {
        console.error('오류 발생:', error);
      }
    }
    

    위의 예시에서 someService.getDataObservable()로부터 데이터를 방출하는 옵저버블을 얻고, firstValueFrom을 사용하여 첫 번째 값을 가져온다.
    성공적으로 값을 가져오면 해당 값을 출력하고, 오류가 발생하면 오류를 콘솔에 출력한다.

    lastValueFrom

    • lastValueFrom 함수는 옵저버블에서 마지막 값을 가져오는 함수이다.
    • 옵저버블이 완료될 때까지 모든 값을 기다린 후, 마지막 값을 반환한다.
    • lastValueFrom은 모든 값을 저장하고 있어야 하므로, 메모리 사용 측면에서 주의해야 한다.
    • 만약 옵저버블이 오류를 방출하면 lastValueFrom은 해당 오류를 전달한다.

    lastValueFrom 예시

    import { lastValueFrom } from 'rxjs';
    
    async function fetchData(): Promise<void> {
      const observable = someService.getDataObservable(); // 데이터를 방출하는 옵저버블
    
      try {
        const lastValue = await lastValueFrom(observable);
        console.log('마지막 값:', lastValue);
      } catch (error) {
        console.error('오류 발생:', error);
      }
    }
    

    위의 예시에서 someService.getDataObservable()로부터 데이터를 방출하는 옵저버블을 얻고, lastValueFrom을 사용하여 마지막 값을 가져온다.
    옵저버블이 완료될 때까지 모든 값을 기다린 후 마지막 값을 가져옵니다. 성공적으로 값을 가져오면 해당 값을 출력하고, 오류가 발생하면 오류를 콘솔에 출력한다.
    위 예시는 단순한 예시로 실제 사용 시나리오에 따라 옵저버블을 생성하고 값을 방출하는 방식은 다를 수 있다.
    주의해야 할 점은 await를 사용하여 값을 기다리는 동안 현재 실행 컨텍스트가 차단될 수 있다는 것이다.

    주로 사용 시나리오에 따라 firstValueFrom 또는 lastValueFrom을 선택하면 되는데,

    만약 옵저버블이 단일 값을 방출하는 경우에는 firstValueFrom을 사용하는 것이 적절하며, 
옵저버블이 여러 값을 방출하고 마지막 값을 사용해야 하는 경우에는 lastValueFrom을 사용할 수 있다.

    반응형
Designed by LEO.