使⽤doOnSubscribe和doFinally使Rxjava代码更整洁
使⽤Rxjava的很多时候都会遵循相同的模式,⼀个常见的⽰例就是我们在应⽤程序中加载⽹络数据,⼏乎所有情况下的代码都是这样的:
显⽰加载状态
加载数据
当数据已经加载完毕的时候需要隐藏加载状态和更新UI
如果出现了错误,隐藏加载状态然后显⽰⼀些错误信息
下⾯就是我们经常使⽤的代码:
publicvoidonViewCreated(Viewview){
adingIndicator();
loadFromServer()
.compo(applySchedulers())
.subscribe(data->{
adingIndicator();
ta(data);
},error->{
adingIndicator();
ror(error);
});
loadData();
}
你可能已经发现了,我们经常会写这些重复的代码,⽐如说
adingIndicator()
,你可能会觉得这些不值得⼀提,但是有时候我们会遇到更加
复杂的逻辑,所以我们要尽量的简化这些代码:
这⾥要介绍两个⽅便的操作符,使⽤它们会是代码更加清洁,
doOnSubscribe
和
doFinally
(这是RxJava2的操作符),现在看⼀下它们能做什么:
doOnSubscribe-修改源,以便从订阅者订阅是调⽤给定的操作
doFinally-在onError和或onCompleted后调⽤指定的操作,或由下游处理。
第⼀个允许我们在观察着订阅时⽴即执⾏动作,第⼆个语序我们在调⽤完成时⽴即执⾏动作,不管他是否成功。
在上⾯的⽰例中使⽤这两个操作符:
publicvoidonViewCreated(Viewview){
loadFromServer()
.compo(applySchedulers)
.doOnSubscribe(_->adingIndicator())
.doFinally(()->adingIndicator())
.subscribe(data->{
ta(data);
},error->{
ror(error);
});
loadData();
}
⼩的改变,但是却整理我们代码的风格,设置这些代码现在就可以作为链的⼀部分来执⾏,订阅处理程序只处理与他们直接相关的内容。
本文发布于:2023-01-04 16:24:49,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/91647.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |