누구든지 명확한 예제를 통해 RxJava에서 Observable, Completable 및 Single의 차이점을 설명해 주시겠습니까?
어떤 시나리오에서 우리는 다른 것보다 하나를 사용합니까?
누구든지 명확한 예제를 통해 RxJava에서 Observable, Completable 및 Single의 차이점을 설명해 주시겠습니까?
어떤 시나리오에서 우리는 다른 것보다 하나를 사용합니까?
답변:
Observable
시간이 지남에 따라 값을 방출하는 이벤트 소스의 일반적인 ReactiveX 빌딩 블록입니다. (따라서 ReactiveX가 확장 된 모든 언어에 존재)
짧은 Observable 이벤트는 다음과 같습니다.
onNext * (onCompleted | onError)? / (* 0 개 이상?-0 개 또는 1 개)
Single
및 Completable
유형의 감소 표현한다 RxJava에 독점적으로 도입 된 새로운 유형입니다 Observable
보다 간결 API를 가지고.
Single
Observable
단일 값 또는 오류를 방출한다는 것을 나타냅니다 .
Completable
표현 Observable
, 그 방출한다 가치가없는,하지만 터미널 이벤트 중 하나 onError
또는onCompleted
다음을 반환하는 메서드의 차이점과 같은 차이점을 생각할 수 있습니다.
개체 컬렉션-관찰 가능
단일 개체-단일
값을 반환하지 않는 메서드 (void 메서드)-완료 가능.
Single
작업 지향 Observable이 있고 한 번 수행되는 Network 요청 및 반환 값 (또는 오류)과 같은 단일 값을 기대할 때 적합 할 수 있으며, 네트워크 호출이 한 번에 작동하므로 추가 값을 반환 할 것으로 기대하지 않습니다. 시간이 지남에. 또 다른 예는 DB 페치 데이터 작업입니다.
Completable
를 가지고 있고 Observable
작업으로 인한 값에 대해 신경 쓰지 않거나 아무것도없는 경우에 적합합니다. 예를 들어 캐시를 업데이트하는 경우 작업이 성공 / 실패 할 수 있지만 값은 없습니다.
또 다른 예는 아무것도 반환하지 않는 장기 실행 초기화 작업입니다. 성공 표시만으로 발생한 UPDATE / PUT 네트워크 호출 일 수 있습니다.
어쨌든 Completable과 Single은 새로운 기능을 추가하지 않지만 더 강력하고 간결한 API를 도입하여 API가 노출 한 Observable 뒤에있는 작업에 대해 더 많이 알려줍니다.
편집하다:
Maybe
:RxJava2라는 새로운 유형을 추가 Maybe
, Maybe
의 조합 Completable
및 단일.
위와 같은 언어 에서 어떤 유형 Maybe
을 반환하는 메서드로 생각할 수 있으며
Optional
, Optional
객체에 값이 있는지 여부를 명시 적으로 알려주는 Object
(null 대신) Object 주위의 래퍼 입니다.
함께 Maybe
우리는 하나 정확히 같은 몇 가지 값을 가질 수 있습니다 Single
또는 반환 아무것도 -처럼 Completable
. 또한 두 가지 모두와 마찬가지로 오류가 있습니다. 값이 없을 수도 있고 완료 될 수도
Maybe
있음을 표시하고 싶을 때 유용 Observable
합니다.
캐시에서 예를 가져 오지만 캐시에 반드시 값이있는 것은 아니므로이 경우에는 완료 onNext
하고 캐시에서 값을 가져옵니다 .
이것은 또한 RxJava2로 스트림에서 널이 아닌 값을 처리 할 가치가 있습니다.
Flowable
:먼저 배압을 정의하겠습니다. 배압은 데이터가 처리 될 수있는 것보다 빠르게 생성되는 상황을 처리하는 수단입니다. Flowable
하류에서 항목을 요청할 수 있도록 배압 지원이 있습니다. 여기 에서 차이점에 대해 자세히 알아볼 수 있습니다 .
Maybe<T>
, 본질적으로 Single<T?>
?
Single
이있는 것으로 간주 할 수 Completable
있습니까?