책소개
RxJS 6 기반으로 배우는 리액티브 프로그래밍 입문하기RxJS는 리액티브 프로그래밍을 자바스크립트에서 구현한 라이브러리다. 자바스크립트 프레임워크인 앵귤러는 이미 버전 2에서 RxJS를 도입했다. 또한 넷플릭스, 마이크로소프트, 에어비앤비, 깃허브 등 글로벌 IT 기업에서도 사용 중이다.이 책은 RxJS를 이용해 자바스크립트로 리액티브 프로그래밍에 입문할 수 있게 도와준다. 다양한 웹 서비스에 RxJS를 적용해온 두 저자가 리액티브 프로그래밍의 개념, 연산자, 스케줄러, 앵귤러/리액트/리덕스 활용, ES2015 문법 소개 등 RxJS를 시작하는 데 꼭 필요한 핵심 개념과 기법을 소개한다.
저자소개
신입 개발자로 LG전자에 입사해 안드로이드 앱을 개발하면서 자연스레 자바에서 동시성 문제를 다루는 데 관심을 두었다. 실무 앱 개발에 동시성 문제를 해결하는 방법으로 RxJava와 함수형 프로그래밍을 접했고, 리액티브 프로그래밍과 동시성 프로그래밍에 매력을 느꼈다. 지금도 동시성 프로그래밍에 관심이 많은 프로그래머이기도 하다.
현재 근무하는 카카오에서는 Daum 영화를 개편해 자바스크립트의 이벤트 처리를 ReactiveX 방식으로 해결했다. 이때 도입한 RxJS의 실무 적용 경험을 바탕으로 이 책을 쓰게 되었고, 기술 블로그에 포스팅하면서 좋은 반응도 얻었다. 최근 관심사는 스프링 프레임워크 5의 웹플럭스를 사용하면서 알게 된 Reactor 라이브러리(https://projectreactor.io/)다.
목차
PART 1 RxJS 소개CHAPTER 1 RxJS 소개와 개발 환경 구축1.1 리액티브 프로그래밍이란?1.2 RxJS1.3 RxJS로 개발할 때 알아야 할 것1.4 RxJS 개발 환경 설정하기1.5 마치며CHAPTER 2 RxJS의 기본 개념2.1 배경 지식2.2 옵저버블2.3 서브젝트2.4 연산자2.5 스케줄러2.6 마블 다이어그램2.7 프로미스와 함께 본 옵저버 콜백 및 에러 처리2.8 함수형 리액티브 프로그래밍에 있는 오해2.9 마치며CHAPTER 3 생성 함수3.1 create 함수3.2 of 함수3.3 from 함수와 fromEvent 함수3.4 defer 함수3.5 range 함수3.6 시간 함수3.7 아무 값도 발행하지 않는 생성 함수PART 2 RxJS의 연산자CHAPTER 4 필터링 연산자4.1 filter 연산자4.2 first 연산자4.3 last 연산자4.4 명시적으로 구독 해제하지 않도록 돕는 연산자4.5 필요 없는 값을 발행하지 않는 연산자4.6 값 발행 후 일정 시간을 기다리는 연산자4.7 중복 값을 발행하지 않는 연산자4.8 샘플링 연산자CHAPTER 5 변환 연산자5.1 map 연산자5.2 pluck 연산자5.3 mergeMap 연산자5.4 switchMap 연산자5.5 concatMap 연산자5.6 scan 연산자5.7 partition 연산자5.8 groupBy 연산자5.9 buffer 연산자5.10 bufferCount 연산자5.11 window 연산자5.12 windowCount 연산자CHAPTER 6 조합 연산자6.1 merge 연산자6.2 concat 연산자6.3 forkJoin 함수6.4 combineLatest 연산자6.5 zip 연산자6.6 startWith 연산자CHAPTER 7 수학 및 결합 연산자7.1 reduce 연산자7.2 max 연산자7.3 min 연산자7.4 count 연산자CHAPTER 8 유틸리티 연산자8.1 tap 연산자8.2 finalize 연산자8.3 toPromise 함수8.4 toArray 연산자8.5 timeout 연산자CHAPTER 9 조건 연산자9.1 defaultIfEmpty 연산자9.2 isEmpty 연산자9.3 find 연산자PART 3 효과적인 RxJS 사용CHAPTER 10 에러 처리10.1 catchError 연산자10.2 retry 연산자10.3 retryWhen 연산자CHAPTER 11 서브젝트11.1 서브젝트의 특성11.2 서브젝트와 옵저버블의 연결11.3 서브젝트의 에러와 완료 처리11.4 서브젝트의 종류11.5 마치며CHAPTER 12 멀티캐스팅 연산자12.1 핫 옵저버블과 콜드 옵저버블12.2 multicast 연산자12.3 publish 연산자12.4 refCount 연산자12.5 share 연산자12.6 마치며CHAPTER 13 스케줄러13.1 이벤트 루프와 RxJS의 스케줄러 개념13.2 스케줄러 구조13.3 대표 스케줄러13.4 스케줄러에서 사용하는 연산자PART 4 실전 RxJSCHAPTER 14 테스트14.1 모카14.2 RxJS 테스트14.3 createHotObservable/ColdObservable 메서드14.4 마치며CHAPTER 15 ES2015 와 RxJS15.1 제너레이터와 프로미스를 응용한 비동기 흐름 제어15.2 co 라이브러리15.3 spawn 연산자15.4 async 및 await와 옵저버블15.5 마치며CHAPTER 16 앵귤러와 RxJS16.1 앵귤러 내부의 RxJS16.2 RxJS를 사용하는 초간단 앵귤러 앱16.3 비동기 파이프16.4 리스트 필터링16.5 마치며CHAPTER 17 리액트에서 RxJS 사용하기17.1 리액트와 리덕스17.2 리액트 프로젝트 구성17.3 리액트 컴포넌트17.4 초간단 리액트 카운터 앱17.5 리덕스17.6 간단한 리덕스 앱17.7 RxJS로 구현하는 리덕스17.8 리액트와 연동하기17.9 비동기 액션17.10 마치며CHAPTER 18 redux-observable18.1 redux-observable18.2 에픽18.3 프로젝트 구성18.4 액션 타입 상수18.5 액션 생성자18.6 리듀서18.7 스토어18.8 리액트와 리덕스 연동18.9 마치며CHAPTER 19 사용자 정의 생성 함수 및 연산자 만들기19.1 사용자 정의 파이퍼블 연산자19.2 사용자 정의 생성 함수APPENDIX A ES2015 기본A.1 let과 constA.2 템플릿 리터럴A.3 향상된 객체 리터럴A.4 비구조화A.5 기본값과 Rest 및 Spread 연산자A.6 화살표 함수A.7 모듈A.8 클래스A.9 프로미스A.10 제너레이터 함수A.11 Array에 추가된 메서드들과 for...of문A.12 MapA.13 SetA.14 심벌A.15 이터레이터와 이터러블A.16 프락시A.17 리플렉트APPENDIX B RxJS 5와 6의 차이점B.1 파이퍼블 연산자를 도입한 이유B.2 자바스크립트 키워드와 충돌 방지B.3 RxJS v5 코드를 RxJS v6 코드로 변경하는 방법B.4 버전과 하위/상위 호환성B.5 마치며