Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- Version
- Algorithm
- androidstudio
- IntelliJ
- homebrew
- Room
- git
- Android
- Kotlin
- FRAGMENT
- github
- library
- Java
- programmers
- Java8
- rxjava
- ViewModel
- Jetpack
- Database
- leetcode
- sourcetree
- ReactiveProgramming
- livedata
Archives
- Today
- Total
Learn & Run
RxJava - 리액티브에서의 생성 연산자 본문
목표
RxJava에서 중요한 요소인 연산자가 무엇인지 알아 보도록 하고 생성 연산자를 사용해보도록 합니다.
1. RxJava에서 연산자란 무엇인가?
- RxJava에서의 연산자는 메서드(함수) 입니다.
- 연산자를 이용하여 데이터를 생성하고 통지하는 Flowable이나 Observable 등의 연산자를 생성할 수 있습니다.
- Flowable이나 Observable에서 통지한 데이터를 다양한 연산자를 사용하여 가공 처리하여 결과값을 만들어 냅니다.
- 연산자의 특성에 따라 카테고리로 분류될 수 있습니다.
2. Flowable / Observable 생성 연산자
- interval
- 지정한 시간 간격마다 0부터 시작하는 숫자(Long)을 통지합니다.
- initialDelay 파라미터를 이용해서 최초 통지에 대한 대기시간을 지정할 수 있습니다.
- 완료 없이 계속해서 통지하게 됩니다.
- 호출한 스레드와는 별도의 스레드에서 실행됩니다.
- Polling 용도의 작업을 수행할 때 활용할 수 있습니다.
* Polling : 서버나 클라이언트에서 특정한 요청을 가져오기 위해 반복적으로 수행하는 것
- range
- 지정한 값(n) 부터 m개의 숫자를 통지합니다.
- for, while 문 등의 반복문을 대체할 수 있습니다.
- timer
- 지정한 시간이 지나면 0(Long)을 통지합니다.
- 0을 통지하고 onComplete() 이벤트가 발생하여 종료됩니다.
- 호출한 스레드와는 별도의 스레드에서 실행됩니다.
- 특정 시간을 대기한 후에 어떤 처리를 하고자 할 때 활용할 수 있습니다.
- defer
- 구독이 발생할 때마다(subscribe()가 호출될 때마다) 새로운 생산자를 생성합니다.
- 선언한 시점의 데이터를 통지하는 것이 아니라 호출한 시점의 데이터를 통지합니다.
- 데이터 생성을 미루는 효과가 있기 때문에 최신 데이터를 얻고자할 때 활용할 수 있습니다.
- 소비자가 구독을 할 때마다 새로운 타임라인이 생깁니다.
- fromIterable
- Iterable 인터페이스를 구현한 클래스(ArrayList 등)를 파라미터로 받습니다.
- Iterable에 담긴 데이터를 순서대로 통지합니다.
- fromFuture
- Future 인터페이스는 Java 5에서 비동기 처리를 위해 추가된 동시성 API입니다.
- 시간이 오래 걸리는 작업은 Future를 반환하는 ExecutorService에게 맡기고 비동기로 다른 작업을 수행할 수 있습니다.
- Java 8에서는 CompletableFuture 클래스를 통해 구현이 간결해졌습니다.
'Java' 카테고리의 다른 글
Java - 메서드 래퍼런스 이해하기 (0) | 2021.01.19 |
---|---|
Java - 함수형 인터페이스와 람다 표현식 (0) | 2021.01.13 |
RxJava - 또 다른 생산자 Single, Maybe와 Completable (0) | 2021.01.12 |
RxJava - 배압 전략(BackpressureStrategy)의 종류 (0) | 2021.01.08 |
RxJava - Flowable과 Observable 이해하기 (0) | 2021.01.08 |