0
我得到了一個小問題,我使用RxJava從服務器檢索數據,然後檢查那些與本地數據,問題我開始在本地檢查文件和存儲數據,然後我在數據完全下載之前啓動可見性,我得到SUCCESS,然後在成功後收到「initRemoteData」結果。Async Observable裏面異步Observable
所以我需要做的就是當observable讓結果繼續時,當我調用「InitRemoteData」時阻止observable。
private Observable<CheckStatus> getCheckObservable() {
return Observable.defer(() -> {
DataDTO dto;
try {
dto = Utils.decryptData(
localfile.getNonce(),
localfile.getEncryptedData(),
password);
} catch (WrongPasswordException e) {
return Observable.just(CheckStatus.WRONG_PASSWORD);
}
try {
storeDataPrefs(dto);
} catch (RuntimeException e) {
return Observable.just(CheckStatus.OTHER_ERROR);
}
storeDatabase(dto);
initRemoteData();//<-Here i did call for another observable but the observable keep going without waiting it to finish.
return Observable.just(CheckStatus.SUCCESS);
});
}
可觀察召喚:
getCheckObservable()
.subscribeOn(BackgroundSchedulers.getMultiThreadInstance())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(Subscribers.create(checkResult -> replaceFragment(
CheckAccountCompleteFragment
.newInstance(checkResult),
AddToBackStack.FALSE)));
UPDATE: initRemoteData代碼:
Observable.zip(getObservable1()),//remote Data
getObservable2(), // local Data
(observableResult1,observableResult2)->{
doSomethingWith(observableResult1,observableResult2); // compare between data
return null;
}).subscribeOn(BackgroundSchedulers.getMultiThreadInstance())
.observeOn(AndroidSchedulers.mainThread())
.doOnCompleted(() -> {
doSomething2(); // update fields
}
})
.subscribe();
我已經調用一個可觀察「initRemoteData」是一個獨立的功能,但我需要一些數據,在getCheckObservable()的整個執行後它可能會完成的問題「initRemoteData」它不會導致主要功能的問題,但它可能是b etter如果我做得正確:p – Gofurs
我不知道我是否正確地得到你。你可以分享'initRemoteData()'代碼嗎? –
我推出了一些簡化的代碼,但足夠了解這個想法 – Gofurs