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