Android rx依次调用多个句子

问题描述 投票:0回答:1

堆栈溢出社区,我只是从响应式编程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
                }
            }));    
java android rx-java2
1个回答
0
投票
使用flatmap运算符可以帮助您清除代码并使它看起来很简单。
© www.soinside.com 2019 - 2024. All rights reserved.