1. 개념 요약
- 비동기 프로그래밍은 시간이 걸리는 작업을 기다리지 않고 처리하는 방식으로, 대표적으로 콜백, Promise, async/await 사용
- 선언적 프로그래밍은 “어떻게”가 아닌 “무엇”을 중심으로 흐름을 기술하며, async/await 등은 가독성과 에러 처리에서 이점 제공
- **반응형 프로그래밍(Reactive Programming)**은 시간 흐름에 따라 발생하는 이벤트 스트림을 처리하는 프로그래밍 패러다임
- RxJS, UniRx, R3 등은 모두 ReactiveX 철학을 공유하며, 스트림 생성 → 연산자 적용 → 구독의 흐름으로 동작
2. 배경 지식
▸ 비동기 프로그래밍 방식
- 콜백(callback): 중첩 구조로 인해 가독성과 유지보수 어려움 ("콜백 헬")
- Promise:
.then()
, .catch()
로 체이닝하여 흐름 제어 가능
- async/await: 마치 동기식 코드처럼 작성 가능하지만, 여전히 흐름 제어 필요
▸ 선언적 프로그래밍의 장점과 한계
- 가독성이 높고 의도 표현이 명확
- 하지만 이벤트 스트림, 복잡한 비동기 흐름, 취소 처리 등은 여전히 명시적 구현 필요
▸ 반응형 프로그래밍의 개념
- 데이터를 **스트림(Stream)**으로 보고, 연산자(
map
, filter
, switchMap
, ...)로 처리
Observable
을 통해 이벤트를 관찰하고, subscribe
로 반응
- 다양한 비동기 이벤트(입력, API 호출, WebSocket 등)를 하나의 모델로 통합