옵저버블?
두가지 방식으로 설명할 수 있을 거 같다.
옵저버블을 직역하면 "관찰할 수 있는"이라는 의미다. 이는 rxjs에서 observer를 붙일 수 있는 값의 모음이다. 특정 신호와 관련 값을 observer에게 보내 무언가를 처리할 수 있다.
옵저버블이 방출할 수 있는 것들은 다음과 같다.
또한 push, pull의 개념으로 observable을 설명할때,
push이며 multiple로 설명할 수 있다.
function와 iterator는 동기적으로 작동하고
promise와 observable은 비동기적으로 작동한다.
(물론, 4가지 모두 반대로 작동할 수도 있지만, 기본적인 사용방식은 그러하다.)
observable 관련 함수
of
입력받은 인자를 순서대로 처리해 옵저버블 배열로 만든다.
from과 유사한데, 차이점은 마지막 인자가 스케쥴러일 경우 해당 스케줄러를 적용 한다.
pipe
pipe 함수를 통해 여러개의 연산자를 함께 사용할 수 있다.
특정 함수를 제외하고는 pipe를 사용해야지만 map, filter 같은 함수를 사용할 수 있다. (심지어 하나만 사용하더라도)
map
옵저버블이 방출하는 각 항목에 함수를 적용하고 새로운 옵저버블로 방출한다.
더 복잡한 로직을 사용하고 싶을 경우 mergeMap, switchMap, concatMap을 사용할 수 있다.
tap
옵저버블의 상태를 확인하는데 사용한다.
로깅(console.log)만 사용가능한 줄 알았는데, 상태 업데이트, 로그 기록, DOM 조작, API 호출 등 다양한 작업을 수행할 수 있었다. 요는 데이터를 변형하지 않고 부수 효과만을 처리하는 것이다.
filter
옵저버블이 방출하는 값 중에서 특정 조건을 만족하는 값만 허용해 방출한다.
mergeMap
옵저버블이 방출하는 각 값에 대해 새로 옵저버블을 병합하여 생성한다.
take
지정된 수의 옵저버블을 방출한다.
skip
지정된 수의 옵저버블을 건너뛰고 옵저버블을 방출한다.