SingleのdoOnSuccessとmapの挙動を確認する
RxJavaのdoOnSuccessとmapの挙動を確認した時のコード。doOnSuccessで加工してもmapには渡らないので気をつける
val single = Single.fromCallable {
Thread.sleep(1000)
listOf(1, 2, 3, 4, 5)
}.doOnSuccess {
Log.d("MainActivity", "doOnSuccess $it")
it.filter { num ->
num >= 3
}
}.map {
Log.d("MainActivity", "map$it")
it.map {
it + 2
}
}
Log.d("MainActivity", "blockingGet ${single.blockingGet()}")
2019-06-11 13:40:32.448 7144-7144/com.github.chiiia12.rxjavasample D/MainActivity: doOnSuccess [1, 2, 3, 4, 5] 2019-06-11 13:40:32.448 7144-7144/com.github.chiiia12.rxjavasample D/MainActivity: map[1, 2, 3, 4, 5] 2019-06-11 13:40:32.449 7144-7144/com.github.chiiia12.rxjavasample D/MainActivity: blockingGet [3, 4, 5, 6, 7]
ref: https://medium.com/@dbottillo/rxjava-a-story-about-delay-and-schedulers-a5afc6e5c7fc