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
- 안드로이드
- 슬기로운 온라인 게임
- 프래그먼트
- 한단어의힘
- 자취필수템
- 어떻게 나답게 살 것인가
- 목적중심리더십
- 리얼하다
- 지지않는다는말
- 베드트레이
- T자형인재
- 소프시스 밤부 좌식 엑슬 테이블
- 브런치작가되기
- 아비투스
- 목적 중심 리더십
- 북한살둘레길
- 소프시스
- 한달브런치북만들기
- 1일1커밋
- 커스텀린트
- 한달독서
- 한달어스
- 캐치마인드
- 테트리스
- 면접
- 좌식테이블
- 끝말잇기
- 베드테이블
- 함수형 프로그래밍
- 재택근무
Archives
- Today
- Total
정상에서 IT를 외치다
[Zip, CombineLater, WithLatestFrom] 리액티브 예제 따라하기 본문
반응형
Zip, CombineLater, WithLatestFrom 예제 살펴보기
/**
* Zip
*/
Observable.zip(
Observable.just(1, 2, 3),
Observable.just(10, 20, 30),
Observable.just(100, 200, 300),
Observable.just(1000, 2000, 3000),
object : Function4<Int, Int, Int, Int, Int> {
override fun apply(t1: Int, t2: Int, t3: Int, t4: Int): Int {
return t1 + t2 + t3 + t4
}
}
).subscribe({
Dlog.d("$it")
}){
Dlog.e(it.message)
}.also {
compositeDisposable.add(it)
}
/**
* merge
*/
val inc = RxView.clicks(btnPlus).map { +1 }
val dec = RxView.clicks(btnMinus).map { -1 }
Observable.merge(inc, dec)
.scan(0) { acc: Int, value: Int -> acc + value }
.subscribe { textView.text = it.toString() }
.apply { compositeDisposable.add(this) }
/**
* combineLatest
*
* 여러 개의 옵저버블을 가질 수 있습니다.
* 각각의 옵저버블의 데이터를 방행한 후에는 어느 옵저버블에서 값을 발행하던지 최신값으로 갱신해준다.
*/
val item1 = Observable.just(1, 2, 3)
val item2 = Observable.just(4, 5, 6)
val observableList = Arrays.asList(item1, item2)
val observable1 = Observable.combineLatest(observableList) {items ->
var count = 0
for(item in items) {
Dlog.d("item : $item")
count += item.toString().toInt()
}
}
observable1.subscribe({
Dlog.d("$it")
}) {
Dlog.e(it.message)
}.also {
compositeDisposable.add(it)
}
/**
* withLatestFrom
*
* 오직 두 개의 옵저버블을 가질 수 있다.
* 두번 째 옵저버블이 emit 하고 나서 부터 첫 번째 옵저버블이 합쳐진다.
*
*/
val firstSubject = PublishSubject.create<String>()
val secondSubject = PublishSubject.create<String>()
val withLatestFrom = firstSubject.withLatestFrom(
secondSubject, object : BiFunction<String, String, String> {
override fun apply(first: String, second: String): String {
return first + second
}
})
withLatestFrom.subscribe({
Dlog.d(it)
}){
Dlog.e("error : ${it.message}")
}.also {
compositeDisposable.add(it)
}
firstSubject.onNext("a")
secondSubject.onNext("b")
firstSubject.onNext("c")
firstSubject.onNext("d")
secondSubject.onNext("e")
firstSubject.onNext("f")
secondSubject.onNext("g")
<참고자료>
반응형
'안드로이드' 카테고리의 다른 글
[Android, IDE] 안드로이드 코딩속도를 높여주는 템플릿 (2) | 2019.04.11 |
---|---|
[Android, MVP] 리뷰 받은 MVP 예제 with Room (2) | 2019.04.07 |
[Android, ReUsingLayout] include, viewStub, merge 태그 사용하기 (2) | 2019.04.04 |
[Android, Cache, Bitmap] 내부저장소에 비트맵 저장하기 (8) | 2019.04.03 |
[Android, Glide] Glide BitmapTransform 파헤쳐 보자! (2) | 2019.03.26 |
Comments