堆栈溢出社区,我只是从响应式编程rx开始,我有以下代码块,其中总的来说,我有一个ROOM插入物,其生成的ID是我通过经过改造的REST服务保存的信息。服务回答它已正确保存,我成功更新了注册表。到目前为止,我已经有了这段代码,但是除了它生成的嵌套,我认为它也很丑陋。
谢谢您的支持。
最诚挚的问候
acta.setStatus(0);
disposable.add( actaDataSource.insert( acta )//Call insert row DAO with ROOM and return Single<Long>
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableSingleObserver<Long>() {
@Override
public void onSuccess(Long id) {
acta.setId( id );
mOcrRepository.putActa( acta )//Call service rest with retrofit for save data in server
.subscribeOn( Schedulers.io() )
.observeOn( AndroidSchedulers.mainThread() )
.subscribeWith( new DisposableSingleObserver<ActaResponse>(){
@Override
public void onSuccess(ActaResponse actaResponse) {
if( actaResponse.isSuccess() ){
acta.setStatus(1);
actaDataSource.update( acta )//Call update row DAO with ROOM and return Completable
.subscribeOn( Schedulers.io() )
.observeOn( AndroidSchedulers.mainThread() )
.subscribeWith(new CompletableObserver() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onComplete() {
//Return three steps succes complete
}
@Override
public void onError(Throwable e) {
//Return three steps failed
}
});
}else{
//Return one step success complete and two step failed
}
}
@Override
public void onError(Throwable e) {
//Return one step success complete and two step failed
}
});
}
@Override
public void onError(Throwable e) {
//Return all failed
}
}));
flatmap
运算符可以帮助您清除代码并使它看起来很简单。