머리말
RXJ의 핵심은 관찰 가능한 데이터 시퀀스를 사용한 비동기 및 이벤트 프로그래밍의 조합 인 관찰 가능한 물체입니다.
이와 매우 유사한 비동기 프로그래밍 모델은 약속입니다. 약속은 상태 변경을 기반으로 한 비동기 모델입니다. 대기 상태가 성공적이거나 실패한 상태로 들어가면 다시 수정할 수 없습니다. 상태가 변경되면 가입자는 하나의 값만 얻을 수 있습니다. 관찰 가능하지만 시퀀스를 기반으로 한 비동기 프로그래밍 모델입니다. 시퀀스가 변경됨에 따라 가입자는 지속적으로 새로운 값을 얻을 수 있습니다. 또한 Promise는 콜백 메커니즘 만 제공하며 복잡한 결과 처리를 지원하기위한 더 많은 작업이 없습니다. 관찰 가능한 것은 복잡한 응용 프로그램 논리를 충족시키기 위해 작업 결과를 처리 할 수있는 다양한 연산자를 제공합니다.
실제 프로그래밍에서 우리는 주로 관찰 가능 , 관찰자 , 구독의 세 가지 개체를 다루고 있습니다.
Observable을 사용하는 방법을 알아 보려면 요소의 클릭 이벤트를 예로 들어보십시오.
var clickStream = new rx.observable (옵저버 => {var handle = evt => 옵저버 .next (evt); element.adeventListener ( 'click', handle); return () => element.removeEventListener ( 'click', handle); handl); evt.id);}, err => {console.error ( 'onerror');}, () => {console.log ( 'oncomplete');}); settimeout (() => {subscription.unsubscribe ();}, 1000); 각 이벤트가 이렇게 싸여 있어야한다면 너무 번거롭지 않습니까? 따라서 RXJ는 이벤트의 연결을 용이하게하기 위해 Observable.fromEvent 의 편리한 기능을 제공합니다.
공통 링크 연산자 : 연결, 병합, 조합 등
프로젝션 작업 : MAP, FlatMap, FlatMap을 도입해야합니다
필터 : 필터, 고유 한 분위기,
운영자 분류 : 카테고리 별 연산자
오류 처리 : 캐치, 재 시도, 마지막으로
감압 : 분해, 스로틀, 샘플, 일시 정지 가능
줄이기 : 버퍼, 버퍼와는, 버퍼와 동시에
Observable의 연산자를 마스터하려면 먼저 시퀀스 다이어그램을 이해하는 법을 배워야합니다.
화살표는 시간이 지남에 따라 변하는 시퀀스를 나타냅니다. 예를 들어, 마우스를 요소에서 지속적으로 클릭하면 원은 외부에 대한 시퀀스의 영향을 나타냅니다. 예를 들어, 요소의 모든 클릭은 이벤트 콜백을 트리거하고 원의 숫자는 외부에서 방출되는 정보입니다. 예를 들어, 각 이벤트 트리거링에는이 작업의 일부 정보를 나타내는 이벤트 객체가 있습니다.
복잡한 논리를 처리하기 위해 Observable을 유연하게 사용하려면 제공하는 연산자를 사용하는 법을 배워야합니다. 연산자를 단일 시퀀스 작업과 복합 시퀀스 작동의 두 가지 범주로 나누었습니다. 단일 시퀀스 작업은 한 시퀀스에서 수행되는 작업 작업을 나타냅니다. 복합 서열 작동은 2 개 이상의 시퀀스를 처리하는 연산자를 의미한다. 복합 서열 작동은 이해하기가 상대적으로 어렵다.
먼저 단일 시퀀스 작업을 살펴보고지도 작업을 예로 들어 보겠습니다.
맵 작업은 매번 전송 된 정보를 외부로 변환하는 것입니다. 위 그림과 같이, 맵은 매번의 전송 값에 10을 곱합니다. 그런 다음 가입자가 가입하면 매번 얻은 구독 값은 더 이상 원래 123이 아니라 변환 10 20 30입니다. 시퀀스 다이어그램을 통해 관찰 가능한 작업을보다 쉽게 이해할 수 있습니다.
합병을 예로 들어 봅시다
병합 작업의 목적은 두 개의 독립적 인 서열을 하나의 서열로 합성하는 것입니다. 원래 시간이 지남에 따라 시퀀스 1은 A at 100ms, B에서 B, B에서 B, 300ms에서 C를 전송하면 가입자는 400ms에서 3 개의 ABC 값을 받게됩니다. 시퀀스 2는 d d에서 150ms, e 250ms, f는 350ms에서 전송되고, 가입자는 400ms 내에 3 개의 DEF 값을받습니다. Merge 이후의 새로운 시퀀스는 400ms 이내에 ABCDEF를받습니다 (순서 참고).
일반 운영자 이해 :
관찰 가능 : 정렬 : 특정 수의 가치 시퀀스를 전송합니다.
Observable.ToArray : 시퀀스가 완료 될 때 방출 된 모든 값을 배열로 변환합니다.
Observable.FlatMap : 원래 시퀀스 스트림의 요소를 새로운 시퀀스 스트림으로 변환 하고이 새로운 시퀀스 스트림을 원래 시퀀스의 요소의 위치로 병합합니다.
Observable.startWith : 관찰 가능한 순서의 첫 번째 값을 설정합니다.
Observable.comBinelatest : PromiseAll과 유사하게 모든 시퀀스에 결과가 나온 후에 만 실행됩니다.
Observable.scan : 순서대로 방출 된 값은 집계 될 수 있습니다. 감소와 유사하게 감소하면 전체 시퀀스의 값이 집계되고 시퀀스가 완료되면 최종 값을 보냅니다.
Observable.Sample : 연속 시퀀스에서 특정 샘플을 얻습니다
Observable.Merge : 여러 시퀀스를 하나로 병합하며 또는
Observable.timestamp : 각 전송 값의 전송 시간을 얻을 수 있습니다.
Observable.distInctuntilChanged (비교, 선택기) : 선택기는 비교에 사용되는 키를 가져 와서 비교하여 두 키를 비교합니다.
관찰 가능. ()은 매개 변수가 False 일 때 데이터 전송을 중지합니다
요약
위는이 기사의 전체 내용입니다. 이 기사의 내용이 모든 사람의 연구 나 업무에 도움이되기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다.