더북(TheBook)

1.4.4 프로그램에서 시간 개념의 추상화

실제로, 시간은 절대적으로 중요합니다. 비동기 코드에서 가장 어려운 부분은 지연 시간과 대기 시간을 처리하는 것입니다. 이와 관련해서는 앞에서 각각 제약 사항이 있는 콜백과 Promise로 해당 문제를 해결하는 방법을 살펴보았습니다. RxJS는 자바스크립트의 일급 객체로서 시간에 따라 연속적인 이벤트 시퀀스의 개념을 제시하는데, 이는 자바스크립트를 위한 진정한 이벤트 하위 시스템입니다. 본질적으로 이것은 RxJS가 시간이 지남에 따라 소스에 상관없이 같은 프로그래밍 모델로 추상화됨을 의미하므로 코드가 완전히 선형이고 동기인 것처럼 데이터를 변환할 수 있습니다. 따라서 마우스 이벤트들을 숫자 배열을 처리하듯이 쉽게 처리할 수 있습니다.

그림 1-11을 보면 스트림이 실제 월간 구독 잡지와 비슷한 것을 알 수 있습니다. 구독 잡지는 실제로 시간대별로 구분된 잡지들의 모음입니다. 즉, 매년 12개의 잡지가 있지만 매월 1개의 잡지만 받게 되는 구조입니다. 잡지를 받으면 보통 잡지를 읽거나 버리는 등의 어떤 행동을 취합니다. 잡지 배달 간격이 0이 되어 모든 잡지를 한꺼번에 받거나 받을 잡지가 없을 경우(그래서 누군가 화가 난 이메일을 받게 될 때)와 같은 고려할 추가 사례들이 있습니다. 그러나 이 모든 경우에서 잡지를 받은 후에만 행동을 취하기 때문에 이 과정을 반응형이라 볼 수 있습니다(잡지를 받을 때 반응하므로). 비반응형인 예로는 공항의 잡지 판매점을 들 수 있습니다. 물론 여기에서도 잡지를 찾을 수 있지만, 여기서는 잡지를 추가로 받지 않으며 구매한 잡지만 받을 수 있습니다. 실제로는 새로운 잡지가 제공될 때가 아니라 잡지 판매점 근처에 있을 때만 업데이트를 받는다는 것을 의미합니다.

▲ 그림 1-11 RxJS는 순차적으로 이벤트를 처리할 뿐만 아니라 비동기 이벤트에서도 같은 프로그래밍 모델을 사용하여 쉽게 작업할 수 있다. 즉, 선형 프로그램에 적용된 것과 같은 수준의 추론을 지연 및 대기 시간이 있는 비선형 프로그램에도 적용할 수 있다.

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