더북(TheBook)

3.2 RxJS 옵저버블 연산자

 

 

RxJS의 의미론에서 구독과 구독 해제는 이벤트 핸들러의 메모리 누수를 피하고자 리소스를 관리하는 데 유용하지만, 이는 일부일 뿐입니다. 그런데 반응형으로 생각하는 것이 무엇인지를 명심해야 합니다. 항상 반응형으로 작업하고 싶다면 사용자 정의 옵저버블을 생성하고 observer.next()로 이벤트를 전달하여 스트림에서 진행되는 작업을 제어하지 말고 때가 되면 제어와 반응을 포기하는 것이 바람직합니다. 이는 RxJS 팩토리 연산자(of(), from() 등)가 관심 있는 이벤트 소스를 래핑하고 원하는 비즈니스 로직을 적용할 수 있는 옵저버블 시퀀스를 생성하게 함을 의미합니다. 따라서 반응형이 된다는 것은 미래 어느 시점에 값이 전달될 때 프로그램이 무엇을 할지를 정의하는 것과 관련이 있습니다.

여기서 RxJS가 빛을 발하는데, 논리적 데이터 흐름을 표현하는 스트림을 생성하는 데 즉시 사용이 가능한 연산자 때문입니다. 따라서 스트림을 만들어 반응형 웹 양식이나 드래그 앤 드롭, 심지어 게임을 포함한 거의 모든 문제를 해결할 수 있습니다.

연산자는 옵저버블 파이프라인에 로직을 삽입할 수 있는 선언적 함수 체인의 일부입니다. 그리고 연산자는 순수 함수이자 고차 함수이기도 합니다. 즉, 연산자는 대상 옵저버블 객체(소스라고 함)를 절대로 변경하지 않고 체인을 계속 유지하는 새로운 옵저버블 객체를 반환합니다. 솔루션의 기본 요소인 비즈니스 로직을 구성하는 함수는 가능한 한 순수 함수를 사용해야 하기 때문에 이 시점부터 FP 모범 사례가 적용됩니다. 이러한 연산자들은 이벤트가 데이터 소스를 떠난 후 소비자에게 도달하기 전에 이벤트를 검사, 변경, 생성, 지연하는 데 사용될 수 있습니다. 다시 말해, 비즈니스 로직 파이프라인의 모든 요소는 프로그램의 순수 함수를 실행하는 하나 이상의 연산자 조합으로 처리됩니다. 그리고 이것으로 충분하지 않으면, RxJS 연산자 또한 지연 평가됩니다.

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