티스토리 뷰
Observable
Rx 하면 떠오르는 가장 유명한 클래스
input data를 여러개 가질 수 있다.
데이터가 발행될 때 마다 onNext() 를 호출하며,
모든 데이터가 발행 된 후 onComplete() 를 호출하고 dispose() 한다.dd
< 간단한 사용 예 >
println("========== Observable test ==========")
Observable.just("i", "am", "ywlee", "861009")
.subscribe(
{
// onNext()
println("onNext() = ${it}")
}, {
// onError()
println("onError() ${it.localizedMessage}")
}, {
// onComplete()
println("onComplete()")
}
)
< 출력 >
========== Observable test ==========
onNext() = i
onNext() = am
onNext() = ywlee
onNext() = 861009
onComplete()
Maybe
데이터가 존재할 경우 onSuccess(), 없을 경우 onComplete() 호출
< 간단 예 >
println("========== Maybe test ==========")
Maybe.just("i")
.subscribe(
{
// on Success
println(it)
}, {
// on Error
println(it)
}, {
// on Complete
println("onComplete")
}
)
데이터를 하나만 가질 수 있으니 String 하나만 넣었다.
< 출력 >
========== Maybe test ==========
i
< 간단 예 2 >
println("========== Maybe test ==========")
Maybe.just(null)
.subscribe(
{
// on Success
println(it)
}, {
// on Error
println(it)
}, {
// on Complete
println("onComplete")
}
)
하지만 위와 같이 just 자체에 null 을 넣으면,
< 출력 >
========== Maybe test ==========
java.lang.NullPointerException: item is null
at io.reactivex.internal.functions.ObjectHelper.requireNonNull(ObjectHelper.java:39)
at io.reactivex.Maybe.just(Maybe.java:891)
.....
위와 같이 NPE 가 발생하며 강종크리를 맞는다.
< 간단 예 3 >
println("========== Maybe test ==========")
Maybe.fromCallable {
return@fromCallable null
}
.subscribe(
{
// on Success
println(it)
}, {
// on Error
println(it)
}, {
// on Complete
println("onComplete")
}
)
fromCallable 로 nullable String 에 null 을 넣어서 보내면,
< 출력 >
========== Maybe test ==========
onComplete
위와 같이 바로 onComplete() 가 호출된다.
Single
1번의 데이터 흐름만을 가질 때 사용하는 Observable class
Observable 이 여러번의 데이터 흐름 (onNext()...onNext()...onNext()........onComplete()...) 를 가진다면,
Single 은 (onSuccess(), onError()) 만을 가진다.
보통 api 호출의 경우 한번의 response를 가지기 때문에 single 을 많이 사용한다고 한다.
< 간단 예 >
println("========== Single test ==========")
Single.just("ywlee")
.subscribe({
// onSuccess
println(it)
}, {
// onError
println(it)
})
< 출력 >
========== Single test ==========
ywlee
단 한번의 호출로 success, error 로 나뉜다.
Completable
데이터를 발행하지 않고, 그냥 Observable 을 부르고 싶을 때.
어떠한 input 없이 비동기로 작업을 실행하고 싶을 때 사용한다.
주로, 특정 시간마다 비동기 작업이 반복되어야 하는 경우에 사용한다고 함.
< 간단 예 >
println("========== Completable test ==========")
Completable.complete()
.subscribe({
// onComplete
println("this is completable")
}, {
// onError
println(it)
})
< 출력 >
========== Completable test ==========
this is completable
'Computer > Android&iOS' 카테고리의 다른 글
[iOS/Swift] UIButton 이미지 <> 타이틀 간격 조정 (0) | 2021.04.15 |
---|---|
iOS 10 이상 push event (0) | 2021.04.13 |
(Android) xml merge 태그 (0) | 2019.12.19 |
(Android) constructor fragmentstatepageradapter(fragmentmanager)' is deprecated. deprecated in java (0) | 2019.12.19 |
( Android ) Android runtime compiler (0) | 2019.12.17 |
- Total
- Today
- Yesterday
- 점유율
- Kotlin
- linux
- Asterisk
- nodejs
- xcode
- 배열
- Swift
- 리눅스
- 앵커브리핑
- 노드
- Node
- node.js
- 스위프트
- 손석희
- 깃헙
- php
- 서버
- 뉴스룸
- C언어
- CentOS
- git hub
- C
- Android
- mysql
- 안드로이드
- GIT
- Phaser
- IOS
- BBC 가쉽
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |