티스토리 뷰
반응형
Single 클래스
Observable 클래스는 데이터를 무한하게 발행할 수 있지만, Single 클래스는 오직 1 개의 데이터만 발행합니다.
API를 호출할 때 유용하게 사용할 수 있습니다.
just 함수
입력
import io.reactivex.Single
class SingleExample {
fun just() {
val source = Single.just("Hello Single")
source.subscribe { x -> println(x) }
}
}
fun main() {
val demo = SingleExample()
demo.just()
}
출력
Hello Single
Obserable에서 Single 클래스 사용
Single은 Observable의 특수한 형태이므로 Observable에서 변환할 수 있습니다.
입력
import common.Order
import io.reactivex.Observable
import io.reactivex.Single
class SingleExample {
fun fromObservable() {
// Observable에서 Single 객체로 변환
val source: Observable<String> = Observable.just("Hello Single")
Single.fromObservable<Any>(source)
.subscribe { x -> println(x) }
// single 함수 호출
Observable.just("Hello Single")
.single("default item")
.subscribe { x -> println(x) }
// first 함수 호출
val colors = arrayOf("Red", "Blue", "Gold")
Observable.fromArray(*colors)
.first("default value")
.subscribe { x -> println(x) }
// empty Observable
Observable.empty<String>()
.single("default value")
.subscribe { x -> println(x) }
// take 함수
Observable.just(Order("ORD-1"), Order("ORD-2"))
.take(1)
.single(Order("default order"))
.subscribe { x -> println(x) }
}
}
fun main() {
val demo = SingleExample()
demo.fromObservable()
}
출력
Hello Single
Hello Single
Red
default value
Order ID: ORD-1
Single 클래스 올바르게 사용
Single 객체를 생성할 때 데이터 하나만 발행합니다.
이유는 just 함수에 여러 개의 값을 넣은 아래 코드로 확인이 가능합니다.
입력
import io.reactivex.Observable
class SingleExample {
fun errorCase() {
val source = Observable.just("Hello Single", "Error").single("default item")
source.subscribe { x -> println(x) }
}
}
fun main() {
val demo = SingleExample()
demo.errorCase()
}
출력
Error
예제 코드
https://github.com/Im-Tae/Blog_Example/tree/master/RxJava/src/main/kotlin
반응형
'알려주는 이야기 > RxJava' 카테고리의 다른 글
6. RxJava - Cold & Hot Observable (0) | 2020.07.07 |
---|---|
5. RxJava - Maybe (0) | 2020.07.07 |
3. RxJava - Observable (0) | 2020.07.06 |
2. RxJava - 마블 다이어그램 (0) | 2020.07.06 |
1. RxJava - Rxjava란? (0) | 2020.07.06 |
댓글