안녕하세요 남갯입니다
val observable1: Observable<String> = Observable.create {
it.onNext("a")
it.onNext("b")
it.onComplete()
}
observable1.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(
{ loge("onNext : ${it}") },
{ loge("onError : ${it}") },
{ loge("onComplete") }
)
// onNext : a
// onNext : b
// onComplete
val observable2: Observable<String> = Observable.defer {
loge("createTest CreateObservable :")
Observable.just("1", "2", "3", "4")
}
observable2.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(
{ loge("onNext : ${it}") },
{ loge("onError : ${it}") },
{ loge("onComplete") }
)
// onNext : 1
// onNext : 2
// onNext : 3
// onNext : 4
// onComplete
val observableJust: Observable<String> = Observable.just("1", "2","abc","1234","aaa")
observableJust
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(
{ loge("onNext : ${it}") },
{ loge("onError : ${it}") },
{ loge("onComplete") }
)
// onNext : 1
// onNext : 2
// onNext : abc
// onNext : 1234
// onNext : aaa
// onComplete
Observable.fromCallable()
아마 자주사용하는 것중에 하나일것이다. 구독이 발생할때 call()함수가 호출되는 lazy initailze(지연초기화) 하는 함수이다
val fromCallableObservable: Observable<Int> = Observable.fromCallable {
1
}
fromCallableObservable
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(
{ loge("onNext : ${it}") },
{ loge("onError : ${it}") },
{ loge("onComplete") }
)
// onNext : 1
// onComplete
Observable.interval()
특정 시간별로 연속된 정수형을 배출하는 Observable을 생성한다
val intervalObservable: Observable<Long> =
Observable.interval(2, TimeUnit.SECONDS)
.take(5)
intervalObservable.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(
{ loge("onNext : ${it}") },
{ loge("onError : ${it}") },
{ loge("onComplete") }
)
실제 2초간격으로 0부터 4까지 발행된것을 알 수 있다.
* Take Observable이 배츨한 처음 n개의 항목들만 배출한다
Observable.range()
특정 범위의 시작점부터 원하는 갯수만큼의 정수형 아이템을 emit한다.
val start = 5
val count =3
val rangeObservable: Observable<Int> =
Observable.range(start,count)
rangeObservable.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(
{ loge("onNext : ${it}") },
{ loge("onError : ${it}") },
{ loge("onComplete") }
)
// onNext : 5
// onNext : 6
// onNext : 7
// onComplete
Observable.timer()
특정 시간 이후에 정수형 0의 아이템을 발행한다.
val timerObservable: Observable<Long> =
Observable.timer(5, TimeUnit.SECONDS)
.doOnSubscribe { loge("onSubscribe") }
timerObservable.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(
{ loge("onNext : ${it}") },
{ loge("onError : ${it}") },
{ loge("onComplete") }
)
위의 설명과 함께 그밖에 많은 함수들을 갖고있다
empty : 아무런 아이템을 발행하지 않고 옵저버블 생성
never : 아무런 아이템 발행안하고 완료를 안하는 옵저버블 생성
throw : 에러를 발행하는 옵저버블 생성
'IT > RxJava, RxAndroid, RxKotlin' 카테고리의 다른 글
[RxJava] flowable (2) | 2019.05.08 |
---|---|
[RxJava, RxKotlin,RxAndroid] concat , merge, zip 알아보기 (9) | 2019.02.26 |