계발자 블로그

[RxJava] 다양한 연산자들 본문

Java/RxJava

[RxJava] 다양한 연산자들

더구더구 2021. 11. 26. 22:30

RxJava에서는 특정한 작업을 수행하는 메소드를 연산자라고 합니다.

대부분의 Observable 연산자는 Observable을 반환하므로 이를 통해 연쇄적인 작업을 차례대로 수행할 수 있습니다.

이것을 체이닝(Chainning)이라고 합니다.

 

RxJava의 연산자에는

Observable을 생성하는 연산자                    

Observable을 변형하는 연산자                     

Observable을 필터링하는 연산자                 

Observable을 결합하는 연산자                   

오류를 다루는 연산자

디버깅을 돕는 연산자

등등이 있습니다

 

공식 문서에는 이렇게 정리가 되어있네요

http://reactivex.io/documentation/operators.html

 

ReactiveX - Operators

Introduction Each language-specific implementation of ReactiveX implements a set of operators. Although there is much overlap between implementations, there are also some operators that are only implemented in certain implementations. Also, each implementa

reactivex.io

 

목록에 포함되는 모든 연산자들을 다 서술하기는 너무 많기 때문에 각 목록별로 한두가지 정도 작성해 보겠습니다

 

생성 연산자

interval 연산자

 

interval 연산자는 주어진 시간 간격으로 순서대로 정수를 발행하는 옵저버블을 생성합니다.

구독을 중지하기 전까지 무한히 배출하므로 적절한 시점에 폐기를 해줘야합니다

 

실행결과

구독이 더는 필요하지 않을 경우 메모리 누수 방지를 위해 명시적인 폐기가 필요합니다

Disposable.dispose() 메소드는 언제든지 아이템 발행을 중단할 수 있습니다.

 

 

 

 

 

range 연산자

 

range 연산자는 특정 범위의 정수를 순서대로 발행하는 옵저버블을 생성합니다.

interval과는 다르게 발행이 끝나면 스트림을 종료시킵니다.

 

 

실행 결과

 

 

변형 연산자

map 연산자

 

map 연산자는 발행되는 아이템을 변환하는 가장 기본적인 방법이자 가장 많이 사용하는 연산자입니다.

발행되는 값에 원하는 수식을 적용하거나 다른 타입으로 변환시킬 수 있습니다.

 

 

실행 결과

 

 

flatMap 연산자

 

flatMap 연산자는 옵저버블을 또 다른 옵저버블로 변환시킵니다.

그런 다음 변환 시킨 옵저버블의 방출되는 아이템 또한 병합하여 자체적으로 다시 아이템을 방출시킵니다.

따라서 일대다 함수라고 생각하면 됩니다.

 

 

실행 결과

 

필터 연산자

filter 연산자

 

필터 연산자는 조건식이 true일 때만 아이템을 발행합니다.

 

실행 결과

 

 

결합 연산자

combineLatest 연산자

 

두개의 옵저버블 중 한 소스에서 아이템이 발행될 때, 두 옵저버블에서 가장 최근에 발행한 아이템을

취합하여 하나로 발행하는 것이 combineLatest 연산자입니다.

 

실무에서 많이 사용되는 연산자라고 하네요

여려 개의 http 요청에 의한 응답을 하나로 묶어서 처리할 때 사용합니다.

 

실행 결과

 

 

오류 처리 연산자

onErrorReturn 연산자

 

오류가 발생하면 아이템 발행을 종료하고,

onError()를 호출하는 대신에 오류 처리를 위한 함수를 실행하는 연산자입니다.

 

실행 결과

 

디버깅을 돕는 doOn~ 연산자

doOnNext 연산자

 

doOnNext 연산자는 옵저버블이 아이템을 발행하기 전에 콜백으로 확인할 수 있도록 해줍니다.

콜백은 간단히 발행된 아이템을 확인할 수 있는  Consumer를 파라미터로 넘깁니다.

 

 

실행 결과

 

이렇게만 해도 엄청 많은 것 같네요

이것들 말고도 더 많은 함수들이 있습니다

연산자에 대해서는 여기까지 알아보겠습니다!

'Java > RxJava' 카테고리의 다른 글

[RxJava] Subject  (0) 2021.11.29
[RxJava] Scheduler  (0) 2021.11.29
[RxJava] Observable  (0) 2021.11.26
[RxJava] RxJava란?  (0) 2021.11.26