더북(TheBook)

값이 생성되고 방출되는 방법에 대한 비즈니스 로직은 옵저버블에 속합니다. 하지만 간단한 숫자 표시기를 원하든 서드파티의 진행률 상태 바 위젯을 사용하든 렌더링의 모든 세부 사항은 옵저버 안에서 호출자가 구현할 몫입니다.

Tip

RxJS의 시간 연산자로 이 작업을 수행할 수도 있습니다. 더 자세한 내용은 다음 장에서 다룹니다.

 

이 방법을 사용하면 프로그램의 여러 상태에 더 많이 반응할 수 있습니다. 2장의 이터레이터와 제너레이터에 관한 논의를 돌이켜보면 옵저버는 이 예제 코드와 유사하게 작동합니다. 주된 차이점은, 이터레이터는 옵저버블이 옵저버에 값을 전송하는 푸시 기반 특성과 반대되는 풀 기반 메커니즘을 사용한다는 것입니다. 이터레이터와 제너레이터는 소비 코드가 소비 속도를 제어합니다. 예를 들어 for 루프는 다른 곳이 아닌 이터레이터 또는 제너레이터에서 가져올 것을 제어(요청)합니다. 즉, next() 또는 yield를 호출하여 새로운 데이터가 필요할 때마다 이터레이터의 소비자는 적절한 메서드를 호출하여 이터레이터의 상태를 업데이트합니다. 다음 그림은 피보나치 수열을 사용하는 또 다른 예를 보여줍니다.

▲ 그림 2-16 이터레이터의 풀 메커니즘

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