rxJava 中 doOnSuccess 与 onSuccess 的用例是什么

mih*_*o39 7 android rx-java retrofit rx-kotlin

我对 rxJava 中 doOnSuccess 的用例感到困惑。
让我们看看代码:

情况1:

networkApi.callSomething()
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())               
    .doOnSuccess(__ -> showLog(SUCCESS))
    .doOnError(__ -> showLog(ERROR))
    .subscribeBy(
             onSuccess = {//Do something}, 
             onError = {//Show log here}
          )
Run Code Online (Sandbox Code Playgroud)

案例2:

networkApi.callSomething()
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())               
    .subscribeBy(
             onSuccess = {
               //Do something
               showLog(SUCCESS)
             }, 
             onError = {showLog(ERROR)}
          )
Run Code Online (Sandbox Code Playgroud)

像往常一样,我认为案例 2 很好。
我也参考了 github 中的一些源代码,我看到有些人确实喜欢案例 1。
我试着问自己doOnSuccess这里的用例是什么?

是否有我们需要应用doOnSuccess()运算符的用例?

aka*_*okd 9

Singles 和 Maybes 有一个成功信号,处理程序onSuccess调用了该方法。但是,通常情况下,您希望在流程中的各个点对成功信号产生副作用,因此有doOnSuccess操作员。

getUserAsSingle()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnSuccess(user -> ui.showUser(user))
.flatMap(user -> 
     getUserFavoritesAsSingle(user)
     .subscribeOn(Schedulers.io())
)
.observeOn(AndroidSchedulers.mainThread())
.doOnSuccess(userFavs -> ui.showUserFavorites(userFavs))
.flatMap(userFavs -> 
     updateLoginCounter(userFavs.userId)
     .subscribeOn(Schedulers.io())
)
.observeOn(AndroidSchedulers.mainThread())
subscribe(newCounter -> ui.showLoginCount(newCounter),
    error -> ui.showError(error));
Run Code Online (Sandbox Code Playgroud)