더북(TheBook)

2.4.2 밑바닥부터 옵저버블 만들어보기

이 장 앞부분에서 배운 것처럼 옵저버블을 초기화하는 데 from()이나 of()와 같은 RxJS 팩토리 연산자를 사용합니다. 실제로 이 연산자들은 모든 요구를 충족해야 합니다. 하지만 이 연산자들을 사용하기에 앞서 RxJS 추상화에서 옵저버블이 어떻게 작동하는지 이해하고 이벤트를 방출하기 위해 옵저버와 어떻게 상호 작용하는지 이해해야 합니다. 이를 위해 이벤트를 비동기로 방출하고 구독 취소 메커니즘을 노출하는 옵저버블 모델의 핵심을 살펴보겠습니다. 이 모델의 핵심 부분에서 옵저버블은 일련의 입력을 처리하고 스트림의 구독 해제를 관리하기 위해 호출자에 대한 구독을 반환하는 함수입니다.

const observable = events => {
const INTERVAL = 1 * 1000;
let schedulerId;
 
return {
  subscribe: observer => {
    schedulerId = setInterval(() => {
      if(events.length === 0) {
        observer.complete();
        clearInterval(schedulerId);
        schedulerId = undefined;
      }
      else {
        observer.next(events.shift());
      }
    }, INTERVAL);
    return {
      unsubscribe: () => {
        if(schedulerId) {
          clearInterval(schedulerId);
        } 
      }
    };
  } 
}
};
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.