我有兩個Observables
。 observableDisconnectContact
負責調用刪除聯繫人的API請求並正常工作。如果聯繫人已從數據庫中刪除,則第二個observableDeleteContact
會發出真或假。我使用greeDao
。RxJava結合布爾運算符
Observable<Boolean> observableDisconnectContact = apiClient.observableDisconnectContact(contactModel.getId())
Observable<Boolean> observableDeleteContact = contactModelRxDao.deleteByKey(contactModel.getDbId())
我想結合兩者,但第二個observable應該在第一個完成時啓動並返回true。我想使用concat()
和first()
。但我必須知道,這兩種流都會發出結果是真的。所以我使用combineLatest()
或zip()
。但是,由於兩個流都在同一時間運行,這不是一個好主意。我注意到first()
運營商不適用於zip()
和combineLatest()
。
如何結合兩個Observables
第二次啓動後第一個流是否如果第一個返回false和兩個流的結果應作爲一個結果。
Observable.combineLatest(observableDisconnectContact, observableDeleteContact, new Func2<Boolean, Boolean, Boolean>() {
@Override
public Boolean call(Boolean isDisconnectSuccess, Boolean isRemoveSuccess) {
return isDisconnectSuccess && isRemoveFromDatabaseSuccess;
}
}).subscribe(new Subscriber<Boolean>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Boolean isDeleted) {
if (isDeleted) {
//TODO
}
}
});
這幾乎是很好。如果'observableDisconnectContact'發出false,它就被稱爲'onComplited()'。是否有可能發佈虛假? – Michael
@邁克爾是可能的,請檢查我的答案 –