RxJava2Demo
RxJava2Demo copied to clipboard
demo中ChapterThree类中的方法practice1出现的一些问题
如果注册失败了,登录的方法还会执行,怎么不执行他呢,而且这个方法里面好像找不到添加Disposable的地方
public void loginAndregister() {
final Api api = RetrofitProvider.get().create(Api.class);
api.register("hegaojian", "123456", "123456")
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(new Consumer<ResponseVo>() {
@Override
public void accept(ResponseVo responseVo) throws Exception {
if (responseVo.getErrorCode() == 0) {
Log.d("hgj", "注册成功");
} else {
Log.d("hgj", "注册失败");
}
}
}).observeOn(Schedulers.io())
.flatMap(new Function<ResponseVo, ObservableSource<ResponseVo>>() {
@Override
public ObservableSource<ResponseVo> apply(ResponseVo responseVo) throws Exception {
return api.login("hegaojian3", "123456");
}
}).observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseVo>() {
@Override
public void accept(ResponseVo responseVo) throws Exception {
if (responseVo.getErrorCode() == 0) {
Log.d("hgj", "登录成功");
} else {
Log.d("hgj", "登录失败");
}
}
});
}
在注册后面的doOnNext里抛异常啊
api.register("hegaojian", "123456", "123456")
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(new Consumer<ResponseVo>() {
@Override
public void accept(ResponseVo responseVo) throws Exception {
if (responseVo.getErrorCode() == 0) {
Log.d("hgj", "注册成功");
} else {
Log.d("hgj", "注册失败");
throw new RuntimeException("注册失败");
}
}
})
抛出来的异常就可以在下游接收处理啊
多思考多实践
多谢多谢