Wie funktioniert der Zip-Operator im Fall von zwei Observable? Für mich unterbricht es den anderen, wenn man fertig ist. Bei einer anderen als Leere wartet es darauf, dass jedes Observable abgeschlossen wird, und dann mit den Ergebnissen zurück.RxJava: Zip Operator Thread Interrupt-Fehler für void beobachtbar
Der Code ist
Observable<Void> deleteImageObservable = deleteImage(order.getPrescriptionUrl())
.subscribeOn(Schedulers.io());
// deltes order image
// Deletes order without image
Observable<Void> deleteOrderObservable = Observable.create(subscriber -> {
App.getFirebase().child(Constants.Path.ORDERS).child(order.getOrderPath()).removeValue((firebaseError, firebase) -> {
if (firebaseError != null) {
// on order delete failed
Timber.e(firebaseError.toException(), "Order delete failed on id ", order.getOrderId());
subscriber.onError(firebaseError.toException());
} else {
Timber.i("Order deleted, key: %s", order.getOrderPath());
subscriber.onCompleted();
}
});
});
return Observable.zip(
deleteImageObservable,
deleteOrderObservable, (aVoid, aVoid2) -> {
return aVoid;
}
);
I cloudinary Uploader bin mit().() Zerstören Bild zu löschen, ist es im Falle des Erfolgs Void zurückgibt sonst Ausnahme/Fehler.
Es führt sofort die Firebase-Abfrage und bei Erfolg, unterbricht die Bild löschen beobachtbar.
Ist dies das richtige Verhalten? Oder gibt es einen Fehler in meinem Code?
Vielen Dank für Ihre Antwort. Das ist der Betreiber, nach dem ich suche. Haben Sie Vorschläge, wann Sie zip verwenden sollen und wann nicht? – Arka
zip ist nützlich, wenn Daten zeilenweise kombiniert werden müssen, aber nicht als Fortsetzungsfunktion dienen. – akarnokd