Ich habe zwei Observables
. observableDisconnectContact
ist verantwortlich für den Aufruf der API-Anfrage zum Entfernen des Kontakts und es funktioniert ordnungsgemäß. Die zweite observableDeleteContact
gibt wahr oder falsch aus, wenn der Kontakt aus der Datenbank entfernt wurde. Ich benutze greeDao
.RxJava kombinieren mit booleschen Operatoren
Ich möchte kombinieren beide aber zweite beobachtbare sollte beginnen, wenn zuerst getan wird und wieder wahr. Ich denke über die Verwendung concat()
und first()
. Aber ich muss wissen, dass beide Ströme aussenden, ist wahr. Also verwende ich combineLatest()
oder zip()
. Aber es ist keine gute Idee, weil beide Ströme in der gleichen Zeit laufen. Ich habe bemerkt, dass first()
Operator nicht funktioniert für zip()
und combineLatest()
.
Wie kann ich beide Observables
kombinieren, wo zweite nach dem ersten Stream gestartet wird oder nicht, wenn zuerst falsch zurückgeben und Ergebnis beider Ströme als ein Ergebnis sein sollte.
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
}
}
});
war es fast gut ist. Wenn 'observableDisconnectContact' false ausgibt, wird es nur 'onComplicted()' aufgerufen. Ist es möglich, falsch auszugeben? – Michael
@Michael es ist möglich, überprüfen Sie bitte meine Antwort –