RxJS vs Promises
- RxJS는 이벤트처리를 위한 강력한 기능을 제공하고있어 다양한 프레임워크와 라이브러리, 그리고 유틸리티를 활용되고있습니다.
- RxJS에서 큰 비중을 가진 기능 중에 하나인 데이터 스트림을 받아 데이터를 처리하는 Observable라는 기능은 JavaScript에서 제공하는 Promise라는 데이터 처리 기능과 유사합니다.
- 그렇기 때문에 많은 개발자들은 JS Promise vs RxJS Observable구도를 가지고 다양한 시선에서 논쟁을 하고 있습니다.
- Observable의 장점
- 옵저버블은 명시적으로 구독 하기 전까지는 실행되지 않지만, Promise는 객체를 생성할 때 바로 실행됩니다. 데이터를 받는 쪽에서 원하는 시점을 결정하는 경우라면 옵저버블이 더욱 효율적이다.
- 옵저버블은 데이터를 여러개 보낼 수 있지만, Promise는 하나만 보낼 수 있어, 데이터를 여러번 나눠서 보내는 경우라면 Observable이 더욱 효율적입니다.
- 옵저버블은 체인과 구독을 구별하지만, Promise의 경우 .then() 하나로 사용합니다. 다른곳에서 가져온 데이터를 복잡하게 가공해야한다면 옵저버블이 더욱 효율적이다.
- 옵저버블에서 제공하는 subscribe()는 에러도 함께 처리할 수 있습니다. Promise는 .catch()를 사용하는 위치에 따라 에러를 처리하는 로직이 달라져야하지만 옵저버블은 에러 처리 로직을 한군데에 집중 할 수있다.
- Promise의 장점
- Promise의 가장 좋은 점은 JS에 내장되어있어 아무것도 추가할 필요가 없고 서브파티 라이브러리가 없습니다. RxJS의 축소된 크기는 45.6kb인데 그만한 가치가 프로젝트를 진행함에 필요한지를 생각 해 보고 사용해야합니다.
- 결국 어떠한 것을 지정해서 하는것이라기 보다는 상황에 따라 사용하는것을 판단하여 사용해야할 것같다
What is Observable LifeCycle (옵저버블 생명주기란?)
- Observable생성: Observable을 생성하려면 먼저 RxJS에서 Observable을 가져옵니다.
import { Observable } from "rxjs";
const observable = new Observable<number>(observer => {
});
- Observable 구독: subscribe()를 이용해 스트림이 전달 될때마다 지정된 옵저버블 처리 로직을 실행 할 수있습니다.
observable.subscribe(value => {
// observer handles notifications
});