RxJS 공식 자습서(一) 개요
RxJS는 관찰 가능한 시퀀스를 사용하여 비동기적이고 이벤트 기반 프로그램을 구성하는 라이브러리입니다.Observable, 방송 형식 (Observer, Schedulers, Subjects), Array # extras (map, Filter, Reduce,every 등) 에서 알림을 받는 핵심 형식을 제공합니다. 비동기 이벤트를 집합 처리로 허용합니다.
ReactiveX는 Observer 모드와 Iterator 모드, 함수 프로그래밍과 집합을 결합시켜 이벤트 시퀀스를 관리하는 이상적인 방식의 수요를 충족시킨다.
RxJS에서 비동기식 이벤트 관리를 해결하는 기본 개념은 다음과 같습니다.
첫 번째 예
일반적으로 이벤트 탐지기를 등록하십시오.
var button = document.querySelector('button');
button.addEventListener('click',() => console.log('Clicked!'));
RxJS를 사용하여 observable을 생성할 수 있습니다.
var button = document.querySelector('button');
Rx.Observable.fromEvent(button, 'click')
.subscribe(() => console.log('Clicked!'));
Purity 순수성
RxJS의 강점은 순수 함수를 사용하여 값을 생성할 수 있다는 점이다.이것은 코드가 틀리기 쉽지 않다는 것을 의미합니다.
보통 당신은 불순한 함수를 만들 수 있는데, 그 중 코드의 다른 부분은 당신의 상태를 어지럽힐 수 있습니다.
var count = 0;
var button = document.querySelector('button');
button.addEventListener('click', () => console.log(`Clicked ${++count} times`));
RxJS를 사용하여 상태를 격리할 수 있습니다.
var button = document.querySelector('button');
Rx.Observable.fromEvent(button,'click')
.scan(count => count + 1, 0)
.subscribe(count => console.log(`Clicked ${count} times`))
scan 조작부호는 수조의 Reduce 함수와 같이 리셋 함수는 하나의 매개 변수를 받아들인다. 초기 값은 0이고 리셋 값은 다음 리셋 함수의 인삼이다.
Flow 흐름
RxJS는 일련의 조작부호를 가지고 있어 이벤트가 관찰 가능한 대상을 어떻게 통과하는지 제어할 수 있습니다.
이것은 순수한 JavaScript를 사용하여 1초에 한 번까지 클릭할 수 있는 방법입니다.
var count = 0;
var rate = 1000;
var lastClick = Date.now() - rate;
var button = document.querySelector('button');
button.addEventListener('click', () => {
if (Date.now() - lastClick >= rate){
console.log(`Clicked ${++count} times`);
lastClick = Date.now();
}
});
RxJS 사용:
var button = document.querySelector('button');
Rx.Observable.fromEvent(button,'click')
.throttleTime(1000)
.scan(count => count + 1, 0)
.subscribe(count => console.log(`Clicked ${count} times`));
기타 흐름 제어부호: Filter, delay, debounceTime, take, takeUntil, distinct, distinctUntilChanged.
Value 값
observable를 통해 전달된 값을 변환할 수 있습니다.
다음은 일반 JavaScript에서 클릭할 때마다 현재 마우스 x 위치를 추가하는 방법입니다.
var count = 0;
var rate = 1000;
var lastClick = Date.now() - rate;
var button = document.querySelector('button');
button.addEventListener('click', (event) => {
if (Date.now() - lastClick >= rate) {
count += event.clientX;
console.log(count)
lastClick = Date.now();
}
});
RxJS 사용:
var button = document.querySelector('button');
Rx.Observable.fromEvent(button, 'click')
.throttleTime(1000)
.map(event => event.clientX)
.scan((count, clientX) => count + clientX, 0)
.subscribe(count => console.log(count));
기타 조작할 만한 부호: pluck,pairwise,sample.
공식 홈페이지http://reactivex.io/rxjs/manual/overview.html#introduction
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.