Reactive Programming과 RxJs

CheolHyeon Park·2020년 3월 17일
0

Angular

목록 보기
1/7

1. 리액티브 프로그래밍이란?

비동기 데이터 스트림에 기반을 둔 프로그래밍 패러다임이다. 기본적으로 리액티브 프로그래밍에서 모든 것을 데이터 스트림으로 본다.

동기/비동기를 각각 처리하던 방식을 하나의 데이터 스트림으로 처리하는 것이다.

데이터 스트림이라는 일관된 형식으로 만들고 이를 구독(subscribe)하여 데이터 스트림의 상태 변화에 반응하는 방식으로 동작하는 애플리케이션을 작성하는 것을 말한다.

데이터 스트림: 연속적인 데이터의 흐름

리액티브 프로그래밍은 데이터를 방출(emit)하는 옵저버블(Observable), 방출하는 데이터를 얻기 위한 객체 옵저버(Observer)로 구성되어있다. 옵저버는 옵저버블을 구독(subscribe)하여 데이터를 얻는다.

2. 리액티브 프로그래밍의 장점

리액티브 프로그래밍의 장점은 Promise나 callback함수가 갖는 단점을 보완할 수 있다.

Promise의 단점

  • 한 번에 하나의 데이터를 처리. 즉, 연속적인 데이터를 처리할 수 없음.
  • 서버로 보낸 요청은 취소 불가능.

그리고 처리해야 할 데이터의 유형이 다양하다는 점이다.

동기는 동기대로, 비동기는 비동기대로 처리를 제각각 해주어야 하는데, 이를 일관된 방식으로 처리할 수 있다.

3. 오퍼레이터(Operator)

Operator는 옵저버블의 생성, 변환, 필터링, 에러 처리의 기능을 하는 함수이다.

오퍼레이터는 새로운 옵저버블을 반환하므로, 체이닝이 가능하다. 이 과정을 옵저버블 시퀀스(Observable Sequence)라고 한다.

1) from

배열과 같은 이터러블(Iterable)을 인자로 전달 받아 옵저버블을 생성한다.

2) map

옵저버블이 방출한 데이터를 인자로 전달받는 콜백 함수를 실행하고 그 결과값으로 이루어진 새로운 옵저버블을 반환한다. Array.prototype.map과 유사하게 동작한다.

3) filter

옵저버블이 방출한 데이터를 인자로 전달받는 필터 함수를 실행하여 그 결과값이 true인 값만을 추출한 새로운 옵저버블을 반환한다. Array.prototype.filter와 유사하게 동작한다.

옵저버블을 구독한 후 완료했을 때, Subscription객체를 반환한다. 이 객체는 unsubscribe가 가능 하다. 보통 ngOnDestory에서 메모리 누수를 위해 추가한다.

이 글은 https://poiemaweb.com 을 참고하였습니다.

profile
나무아래에 앉아, 코딩하는 개발자가 되고 싶은 박철현 블로그입니다.

0개의 댓글