더북(TheBook)

3.1.4 RxJS와 다른 API 간의 취소 불일치

RxJS 옵저버블은 이벤트 스트림을 취소하고 해제하는 단순한 메커니즘을 제공합니다. 그러나 이 단순성은 다른 자바스크립트 API와 함께 사용할 때 문제가 될 수 있습니다. 예를 들어 Promise를 감싸는 옵저버블을 취소하려고 할 때 문제가 발생할 수 있습니다. 다음 예제를 보겠습니다.

예제 3-2 Promise의 해제

const promise = new Promise((resolve, reject) => { -- 10초 뒤에 42를 반환하는 Promise를 생성합니다. 
  setTimeout(() => {
    resolve(42);
  }, 10000);
);
 
promise.then(val => {
  console.log(`In then(): ${val}`); -- 반환된 Promise 값을 처리합니다.
});
 
const subscription$ = Rx.Observable.fromPromise(promise).subscribe(val => {
  console.log(`In subscribe(): ${val}`); -- Promise API 주위에 옵저버블을 래핑합니다.
});
 
subscription$.unsubscribe(); -- 옵저버블을 해제하려고 시도합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.