더북(TheBook)

2.4 옵저버로 데이터 사용하기

 

 

옵저버블을 통해 방출되고 처리되는 모든 데이터에는 목적지가 필요합니다. 즉, 특정 이벤트를 포착하고 처리하는 목적은 무엇일까요? 옵저버는 구독 컨텍스트 안에서 만들어지는데, 이는 옵저버블 소스에서 subscribe()를 호출한 결과가 Subscription 객체임을 의미합니다. 옵저버블은 동기 또는 비동기로 작동하므로 옵저버블의 소비자는 콜백과 함께 발생하는 제어의 역전을 어떤 식으로든 지원해야 합니다. 이는 푸시 기반 메커니즘과 일치합니다. 예를 들어 DOM 요소가 언제 이벤트를 발생시킬지 또는 AJAX 호출 결과가 언제 반환될지 모르기 때문에 옵저버블은 그림 2-13처럼 옵저버의 next() 함수로 더 많은 데이터를 사용할 수 있음을 옵저버 구조에 신호를 보내거나 호출해야 합니다. 이 메커니즘은 이터레이터와 옵저버 패턴에서 직접 영감을 얻었습니다. 이터레이터는 반복되는 데이터 구조의 크기나 종료 여부는 알지 못하고(관심 없고), 처리할 데이터가 더 있는지 그 여부만 알 수 있습니다.

옵저버블은 간단한 이터레이터 유사 API로 더 많은 이벤트가 발생했는지 여부를 구독자에게 알릴 수 있습니다. 이를 통해 옵저버가 수신하는 데이터를 유연하게 제어할 수 있습니다.

▲ 그림 2-13 옵저버블은 옵저버의 메서드를 호출한다. 옵저버는 next( ) 메서드로 간단한 이터레이터 유사 API를 노출한다. 구독 시 Subscription 타입의 객체는 호출하는 코드로 반환되는데, 이 구조는 앞으로 논의할 구속 취소나 구독 해제에 사용할 수 있다.

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