unsubscribe

lee jae hwan·2022년 8월 31일
0

RxJS

목록 보기
6/21

구독취소는 스트림에서 방출하지 않게한다.

subscription = interval(1000).subscribe(console.log);
subscription.unsubscribe();

    const stream$ = new Observable<number>(observer=>{

      let count=0;
      let stopSetInterval = setInterval(()=>{
        console.log('streaming');
        observer.next(count++);
      },1000);
      
      return ()=>{
        console.log('call unsubscribe');
        clearInterval(stopSetInterval);
      }
      
    });

setInterval함수와 observer.next(count++)를 내부에서 작동시키면 unsubscribe했을때 방출함수는 중지되지만 setInterval는 독립적으로 실행되는 함수이므로 반드시 clearInterval로 취소해야 한다.

이러한 경우를 위해서 RxJS는 방출함수에서 래퍼함수를 리턴하면 unsubscribe했을때 자동으로 실행되도록 해놓았다.

위와같이 리턴되는 함수에 clearInterval하면 메모리누수가 없다.


RxJS interval내부장함수를 사용하면 unsubscribe했을때 자동으로 중지된다.

0개의 댓글