- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- C++
- 에러처리
- git error
- html
- 자바스크립트
- JavaScript
- 알고리즘
- error
- React
- Java Script
- es6
- deep dive
- http
- 그림으로 배우는 http&network
- get
- 프론트엔드
- js
- Angular
- async
- 모던 자바스크립트 deep dive
- 네트워크
- 상태관리
- 백준
- 백준 실버
- map
- 이터러블
- 웹
- git
- 비동기
- 모던 자바스크립트
sharingStorage
RxJS 본문
- RxJS :
RxJS는 Reactive Extension for JavaScript의 약어로 Javascript 라이브러리이다.
Reactive X는 Observer패턴, Iterator패턴, 함수형 프로그래밍을 조합하여 제공하는 것이며
RxJS는 이벤트 스트림을 Observerable이라는 객체로 표현한 후 비동기, 이벤트 기반의 프로그래밍 작성을 돕는다.
이벤트 처리를 위한 API로 다양한 연산자를 제공하는 함수형 프로그래밍 기법도 도입되어 있다.
※Reactive Extensions : Reactive X프로젝트에서 출발한 Reactive Programming을 지원하기위해 확장한 것 .
- Reactive Programming :
: Reactive 하다는 것은 데이터를 다룰 때에 스트리밍형식으로 다룬다는 것을 의미합 니다. 프론트엔드에서는 사용자의 이벤트를 기반하여 구현되는 로직이많기 때문에 더욱이 Reactive하게 구현되는 것이 유지보수 측면이나 가독성 측면에서 좋은 점이있다.
- Pull vs Push
외부와 통신하는 방식은 Pull 과 Push 시나리오가 있을 수 있다.
- Pull 시나리오
producer가 외부에서 명령하여 응답받고 처리한다.
생상자가 요청이 받아질 때 데이터를 생성하며 consumer는 데이터 요청의 때를 결정한다. consumer가 원하는 타이밍에 데이터를 당겨올 수 있다. 모든 자바스크립트 함수는 pull시나리오를 따른다. 그러므로 consumer가 데이터를 가지고 오기 위해서는 계속 호출해야 한다.
- Push 시나리오
외부에서 명령하고 기다리지 않고, 응답이 오면 그때 반응하여 처리한다. 즉 producer가 consumer에게 데이터를 보낼 때를 결정한다. producer가 consumer에게 데이터를 민다(push)한다고 이해하면 될 것 같다.
따라서 consumer는 데이터를 받을 때를 알지 못할것이므로 데이터를 가지고 오기 위해서 구독하고 있어야 한다.
RxJS는 Observable을 자바스크립트의 새로운 Push시스템이라고 소개하며 Observable은 multiple value의 생산자이다.
Reactive Programming 은 Push 시나리오를 채택하고 있다.
- RxJS의 사용 이유 :
- RxJS는 이벤트나 배열같은 데이터 스트림을 비동기로 처리해 변화에 유연하게 반응한다.
- 비동기 코드가 많아지면 제어의 흐름이 복잡하게 얽혀 코드를 예측하기 어려워지는데 RxJS는 JavaScript의 비동기 프로그래밍의 문제를 해결하는데 도움을 줍니다.
- pure함수를 사용하여 값을 생성하기 때문에 에러가 덜 발생합니다.
- 비동기 이벤트 관리를 위한 RxJS의 필수개념:
Observerable
- 호출할 수 있는 값또는 이벤트의 집합 , 이벤트 스트림
- Observerble 구독시 next, error, complete 3가지 핸들러 사용가능
-Observable은 이벤트를 동기 또는 비동기로 발생시킬 수 있음
Observer
- Observerable에 의해 전달된 값을 수신하는 방법을 아는 callback들의 집합
Subscription
- Observerable을 구독하면(subscribe) subscription객체 리턴.
- Observerable의 실행을 나타냄. 주로 실행 취소에 유용함
Operators
- map, filter, concat 등 operation을 다루는 함수형 프로그래밍을 가능하게하는 순수 함수
Subject
- 멀티캐스트를 위한 특별한 유형의 Observerable. 일반적으로 하나의 Observerable은 하나의 observer만 등록할 수 있음
- EventEmitter와 동등함. 하나의 Observerable을 구독을통해 여러 Observer 에게 이벤트 또는 값을 멀티캐스팅
- Observerable이지만 observer로서 다른 observerable을 구독 할 수 있음
Schedulers : 우리가 setTimeout같은 계산이 일어날 때 우리가 조정할 수 있게 동시성을 조정한다.
+'스케줄러'는 작업을 실행하는 데 사용되는 타이밍 전략을 제어하는 방법
Reference
- https://rxjs.dev/guide/overview 공식문서
- https://rxjs.dev/api/index/function/of 공식문서 of등 api
- https://angular.kr/guide/rx-library Angular에서 말하는 RxJS 라이브러리
- https://pks2974.medium.com/rxjs-%EA%B0%84%EB%8B%A8%EC%A0%95%EB%A6%AC-41f67c37e028
- https://iamsjy17.github.io/rxjs/2020/10/07/inside-rxjs-creation-fn-etc1.html
- https://private.tistory.com/24
- https://min9nim.vercel.app/2020-04-24-rxjs/
- Observer Pattern에 대해 더 알고싶다면? https://anstrengung-jh.tistory.com/12
- Iterator Pattern에 대해 더 알고싶다면? https://anstrengung-jh.tistory.com/11
'Front-End > Javascript' 카테고리의 다른 글
null과 undefined에 관한 고찰 (0) | 2024.07.10 |
---|---|
JSON (0) | 2022.03.17 |
참조에 의한 객체 복사 (0) | 2021.12.28 |