示例rxjava1中的代码
Observable.flatmap(new Func1<WisprReplyRoot, Observable<WFTSuccessCode>>() {
@Override
public Observable<WFTSuccessCode> call(WisprReplyRoot ret) {
if (ret == null) {
Logger.info("return a null object");
return Observable.error(new WisprReturn(WFTErrorCode.WISPR_LOGIN_CONTENT_ERROR));
})
return Observable.just(WFTSuccessCode.AUTHENTICATION_SUCCESS);
}
.onErrorResumeNext(wisprOnErrorResumeNext)
.doOnNext(new Action1<WFTSuccessCode>() {
@Override
public void call(WFTSuccessCode successCode) {
}
})
.doOnError(new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
}
}
.subscribe(new Subscriber<WFTSuccessCode>() {
//特别注意rxjava1的Subscriber,这是引起问题的所在,在rxjava1当中运行没有问题,但是rxjava2不能直接借用
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable throwable) {
if (throwable instanceof WisprReturn) {
callback.onFailed(error.getErrorCode(), error.getMessage());
} else {
callback.onFailed(WFTErrorCode.NETWORK_FAILED, null);
}
}
@Override
public void onNext(WFTSuccessCode successCode) {
callback.onSuccess(successCode);
}
});
然后看下rxjava2的需要改成如下才可以使用,留意方法
subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError);
因此需要这样改动:
Observable.flatmap(new Function<WisprReplyRoot, Observable<WFTSuccessCode>>() {
@Override
public Observable<WFTSuccessCode> call(WisprReplyRoot ret) {
if (ret == null) {
Logger.info("return a null object");
return Observable.error(new WisprReturn(WFTErrorCode.WISPR_LOGIN_CONTENT_ERROR));
})
return Observable.just(WFTSuccessCode.AUTHENTICATION_SUCCESS);
}
.onErrorResumeNext(wisprOnErrorResumeNext)
.doOnNext(new Consumer<WFTSuccessCode>() {
@Override
public void call(WFTSuccessCode successCode) {
}
})
.doOnError(new Consumer<Throwable>() {
@Override
public void call(Throwable throwable) {
}
}
.subscribe(new Consumer() {
@Override
public void accept(Object o) throws Exception {
Log.e(TAG, "O=" + o);
}
}, new Consumer<Throwable>() { //第二个参数相当于onError
@Override
public void accept(Throwable throwable) throws Exception {
Log.e(TAG, "throwable=" + throwable);
}
});
注:文章代码不可直接运行,只是项目当中摘过来的部分代码,欢迎指正,谢谢~