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 |
| 31 |
Tags
- Swift
- Filter
- docker-compose
- list
- enum
- class component
- vuex
- ConstraintLayout
- Generic
- function
- Foreign Key
- mongoose
- 생명주기
- docker
- Interface
- union
- lifecycle
- CLASS
- recyclerview
- collection
- Service
- LiveData
- elementAt
- Kotlin
- ReactNative
- react native
- MINUS
- map
- animation
- AWS
Archives
- Today
- Total
개발 일기
Transforming Observables 본문
Buffer
매개변수에 주어진 값만큼 데이터를 모아두었다가 발행을 합니다.
Observable.just(1,2,3,4,5)
.buffer(3)
.subscribeBy {
println(it)
}
[1, 2, 3]
[4, 5]
FlatMap
FlatMap을 통해서 어떠한 입력 값을 받아서 Observable로 변환을 합니다.
Observable.just(1,2,3,4,5)
.flatMap {
Observable.just(it).map { data -> data + 1 }
}
.subscribeBy {
println(it)
}
2
3
4
5
6
GroupBy
어떤 기준으로 여러 개로 이루어진 Observable 그룹을 생성합니다.
val array = listOf(1, 1, 2, 2, 3, 3)
Observable.fromIterable(array)
.groupBy {
if (it == 1) {
return@groupBy "one"
}else {
"two"
}
}
.subscribeBy { obj ->
obj.subscribeBy {
println("GROUP: ${obj.key} value:+$it")
}
}
GROUP: one value:+1
GROUP: one value:+1
GROUP: two value:+2
GROUP: two value:+2
GROUP: two value:+3
GROUP: two value:+3
Map
인자로 전달받은 데이터에 변형을 한뒤에 새로운 값을 반환합니다.
val array = listOf(1, 1, 2, 2, 3, 3)
Observable.fromIterable(array)
.map { it * 2 }
.subscribeBy { obj ->
println(obj)
}
}
2
2
4
4
6
6
Scan
scan을 통해서 순차적으로 계속해서 누적해서 onNext 전달을 진행을 합니다.
val array = listOf(1, 2, 3)
Observable.fromIterable(array)
.scan { t1: Int, t2: Int ->
println("########## t1 ##########")
println(t1)
println("########## t2 ##########")
println(t2)
t1 + t2
}
.subscribeBy { obj ->
println("########## subscribe ##########")
println(obj)
}
}
########## subscribe ##########
1
########## t1 ##########
1
########## t2 ##########
2
########## subscribe ##########
3
########## t1 ##########
3
########## t2 ##########
3
########## subscribe ##########
6
예제를 통해 봤을 때 t1에서는 누적된 값 , t2에서는 original event 인것을 알수가 있습니다.
Window
window는 어떻게 보면 buffer와 비슷합니다. 하지만 다른점은 Observable을 통해서 return을 시킨다는 점이 다릅니다.
val array = listOf(1, 2, 3,4,5,6,7,8,9)
Observable.fromIterable(array)
.window(3)
.subscribeBy { obj ->
obj.toList().subscribeBy {
println(it)
}
}
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
val array = listOf(1, 2, 3,4,5,6,7,8,9)
Observable.fromIterable(array)
.window(3)
.subscribeBy { obj ->
obj.toMap {
it
}.subscribeBy {
println(it)
}
}
{1=1, 2=2, 3=3}
{4=4, 5=5, 6=6}
{7=7, 8=8, 9=9}'Client > 안드로이드' 카테고리의 다른 글
| Rxkotlin - Retry (0) | 2020.06.02 |
|---|---|
| Filtering Observables ? (0) | 2020.06.01 |
| Rxjava(RxKotlin) - create(2) (0) | 2020.05.28 |
| RxJava (RxKotlin) - create(1) (0) | 2020.05.27 |
| Rxjava(Rxkotlin) - Observables (0) | 2020.05.26 |
Comments