"
问题:
RxView.clicks 之后请求网络,使用retrofit,如下:
RxView.clicks(findViewById(R.id.button2)) .subscribe(new Consumer<Unit>() { @Override public void accept(Unit unit) throws Exception { Http.get().create(TimeApi.class).getLicense(TimeApi.url) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<TimeModel>() { @Override public void accept(TimeModel timeModel) throws Exception { btn.setText(timeModel.getData() + ""); } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception {
}
});
}
});
</code></pre>
怎么消除嵌套?
我使用了concatMap、flatMap,compose,都有一些问题。比如Scheduler问题,或者click事件不点击直接执行问题:
ObservableTransformer<Unit, TimeModel> transformer = new ObservableTransformer<Unit, TimeModel>() {
@Override
public ObservableSource<TimeModel> apply(Observable upstream) {
return Http.get().create(TimeApi.class).getLicense(TimeApi.url);
}
};
RxView
.clicks(btn2)
.compose(transformer)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<TimeModel>() {
@Override
public void accept(TimeModel model) throws Exception {
Log.d("HHHH", model.getData()+"");
btn2.setText(String.valueOf(model.getData()));
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
Log.d("HHHH", "error");
btn2.setText("---------------"+throwable.getMessage());
}
});
RxView.clicks(btn2)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.concatMap(new Function<Unit, ObservableSource<TimeModel>>() {
@Override
public ObservableSource<TimeModel> apply(Unit unit) throws Exception {
return Http.get().create(TimeApi.class).getLicense(TimeApi.url);
}
})
.subscribe(new Consumer<TimeModel>() {
@Override
public void accept(TimeModel model) throws Exception {
Log.d("HHHH", model.getData()+"");
btn2.setText(String.valueOf(model.getData()));
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
Log.d("HHHH", "error");
btn2.setText("---------------"+throwable.getMessage());
}
});
Disposable subscribe = RxView
.clicks(btn2)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.flatMap(new Function<Unit, ObservableSource<TimeModel>>() {
@Override
public ObservableSource<TimeModel> apply(Unit unit) throws Exception {
Log.d("HHHH", "request");
return Http.get().create(TimeApi.class).getLicense(TimeApi.url);
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<TimeModel>() {
@Override
public void accept(TimeModel model) throws Exception {
Log.d("HHHH", model.getData()+"");
btn2.setText(String.valueOf(model.getData()));
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
Log.d("HHHH", "error");
btn2.setText("---------------"+throwable.getMessage());
}
});
"
![image.png](https://ucc.alicdn.com/pic/developer-ecology/232469af75a141efbb9d12637f3e560a.png)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。