* 영어표기가 디폴트, 이하 한글표기
* Angular 기준
https://reactivex.io/documentation/ko/observable.html
1. Observable
- 어떤 데이터를 Observer 가 처리할 수 있도록 포장하는 작업, 하나의 클래스
- 하나, 하나 이상의 연속된 항목... 추가적으로 데이터를 변형하거나 추가도 가능
2. Observer (핵심)
- 관찰할 수 있는 형태로 전달받은 데이터를 처리하는 역할. Observable 를 읽기 위해 Subscribe(구독) 가 필요.
- Observable 이 배출하는 하나- 하나 이상의 연속된 항목에 반응함
- 객체를 끝까지 배출할 때 까지 기다릴 필요없다. ~ 원하는 시점에서 작업가능
- 호출의 개념보다, Observable 안의 데이터를 조회 - 변환하는 매커니즘을 정의
- Observable 이 이벤트를 발생시키면 옵저버가 그 순간을 감지 및 준비된 연산을 실행
2-1). Subscribe
3. Operator
- 연산자, 형식을 변환 - 수정하는 번역기 역할
1(사운드) - 3(스피커) - 2(청자)
- 1번의 다듬어지지 않은 사운드를 mp3 등의 파일로 변환하여, 2번의 스피커를 통해, 3번의 청자에게 전달
그러면 Subject 는 뭐지?
- 일종의 옵저버, 동시에 Observable
- 그래서 하나의 Observable 을 구독할 수 있으며, 항목 하나하나를 거치며 재배출 - 관찰 - 새 항목을 동시에 방출 가능
!! Cold 와 Hot
1). Cold : 구독 전까지 데이터 방출 X, (웹 요청, DB쿼리, 파일 읽기 등)
2). Hot : 구독 여부 상관 X, 데이터 방출 자유 (마우스 이벤트, 키보드 이벤트, 시스템 이벤트 등)
- Subject 는 무려, Cold 를 Hot 으로 만들어준다!!
Subject 가 좋은건 알겠는데. Subscribe(구독) 한 시점부터 사용하는 방식이 다양하더라
1. Async Subject
- Observable 에서 발행한 가장 최근값이 출력됨.
- 완료되기 전 마지막 데이터만 남기고, 이전 데이터는 무시
2. Behavior Subject
- 기본값이 존재, 설정 가능함
- 가장 최근값이 출력됨
- 최근값이 없으면 기본값이 출력되는데, 새로 데이터가 들어오면 새로 들어온 것으로 갱신!
3. Publish Subject
- 기본값 X, 특별한 옵션 X
- 구독한 시점의 데이터를 받음
4. Replay Subject
- 구독한 시점 이전의 모든 데이터가 출력됨
- 처음 값부터 모두 누적되기 때문에 메모리 누수 발생 가능성이 있음
5. Connectable Subject
- Connect 메서드 호출이 있어야 사용됨.
- 호출 전까지 출력되지 않음. 데이터는 존재 하지만...
추가로 callback 공부 더 할것.
'프로그래밍 기초 > 기초문법' 카테고리의 다른 글
객체지향_2 (0) | 2022.11.04 |
---|---|
undefined, null (1) | 2022.09.30 |
Context (공부중) (0) | 2022.09.27 |
Callback, => (1) | 2022.09.15 |
Push, Pop, Unshift, Shif (0) | 2022.09.15 |