-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
我现在的需求网络请求如果请求结果在200毫秒内就不显示loading界面,如果请求超过200毫秒就显示loading界面,然后返回结果时候显示正常界面,用rx应该怎么实现比较好呢?
我现在的实现方式是把一个空数据和请求mergewith 但是我觉得这样非常不rx,想问问大家觉得怎么搞?
Observable<ValueBlock> loading = Observable.just(emptyList).delay(200, TimeUnit.MILLISECONDS);
mAppMainModel.getMainData()
.mergeWith(loading)
.filter(valueBlock -> {
return (valueBlock.nav != null && valueBlock.nav.size() != 0) || mNavItems == null;
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ValueBlock>() {
@Override
public void onSubscribe(Disposable d) {
mCompositeDisposable.add(d);
}
@Override
public void onNext(ValueBlock block) {
//nav数据
if (block.nav == null || block.nav.size() == 0) {
mView.showProgress("tt");
} else {
mNavItems = block.nav;
mView.setupViewPager(mNavItems, JSON.toJSONString(block.blocks));
}
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
@Override
public void onComplete() {
mView.hideProgress();
}Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels