android - rxJava 中 doOnSuccess 与 onSuccess 的用例是什么
问题描述
我对 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}
)
案例二:
networkApi.callSomething()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeBy(
onSuccess = {
//Do something
showLog(SUCCESS)
},
onError = {showLog(ERROR)}
)
像往常一样,我认为案例 2 很好。
我还在 github 中引用了一些源代码,我看到有些人确实喜欢案例 1。
我试着问自己doOnSuccess
这里的用例是什么?
有没有我们需要应用doOnSuccess()
运算符的用例?
解决方案
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));
推荐阅读
- java - Spring @Controller、@Service 和 @Component 中 @Autowire HttpServletRequest 请求的并发问题
- python - 我想知道从 Beautiful soup 中新找到的链接是否已经在 queue.txt 文件和 crawled.txt 文件中
- javascript - 在导航栏中登录注销
- php - 带有 some_string_ID 的 SQL 连接 ID
- html - 如何使图像悬停在跨度容器之外
- python - 如何将熊猫数据框转换为特定的 json 格式
- postgresql - PostgreSQL 13 FATAL:用户“postgres”的密码验证失败
- google-apps-script - 应用脚本:如何在 Google Sheet 中返回 BigQuery-Request 的 TotalRows
- npm - 如何访问 GCP 云构建步骤创建的日志文件?
- c# - 在我的触摸屏笔记本电脑中,我的自定义滑块在 UWP 应用程序中不起作用,但滑块工作正常?