더북(TheBook)

다음은 옵저버블들이 체인2을 어떻게 구현하는지를 보여주는 간단한 예제입니다.

Rx.Observable.from(<data-source>) -- 스트림으로 데이터 소스를 감쌉니다.
.operator1(...) -- .(점) 연산자로 연결된 일련의 연산을 호출하는데, 3장에서 옵저버블 인스턴스 메서드에 관해 자세히 다룹니다.
.operator2(...)
.operator3(...)
.subscribe(<process-output>); -- 결과를 처리합니다.

어떠한 정의를 받아들이든 옵저버블은 현재 값이 아니라 미래에 발생할 값에 대한 개념을 나타낸다는 점을 이해하는 것이 중요합니다. 이는 FP에서 계산될 값에 지나지 않는 순수 함수에 대한 정의와 같으며 옵저버블 인스턴스에서 호출되는 메서드를 연산자(operator)라고 부르는 이유기도 합니다.

RxJS에서 옵저버블은 불변 데이터 타입이므로 이 패턴이 매우 잘 작동하며 낯설지 않습니다. 익숙한 데이터 타입인 String을 떠올려보세요. 그리고 간단한 다음 예제를 보고 이전 패턴과의 유사성을 확인해 보세요.

String('RxJS')
.toUpperCase()
.substring(0, 2)
.concat(' ')
.repeat(3)
.trim()
.concat('!')  //-> "RX RX RX!"

새로운 도구를 배우는 일은 언제나 흥미롭습니다. 개발자는 잠재적으로 적용할 수 있는 모든 상황에 새로운 도구를 사용해 보려는 경향이 있습니다. 그러나 흔히 그렇듯 모든 상황에 적합한 도구는 없으며 RxJS가 사용되지 않는 곳을 이해하는 것도 중요합니다.

연산 작업을 두 가지 차원 내에서 네 그룹으로 나눌 수 있습니다. 첫 번째 차원은 처리할 수 있는 데이터의 수입니다. 두 번째는 데이터를 처리해야 하는 방식, 즉 동기 또는 비동기 방식입니다. 이러한 가능성을 열거하면서 RxJS가 애플리케이션에 가장 유용한 곳이 어딘지 강조하고자 합니다.

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