0
zip操作符在兩個Observable的情況下如何工作?對我來說,一旦完成就會打斷另一個。除了無效之外,它等待每個觀測值都完成,然後返回結果。RxJava:zip操作員線程中斷錯誤,無法觀察
的代碼是
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;
}
);
我使用cloudinary上傳()。destroy()方法來刪除圖像,它的成功,否則異常/錯誤的情況下返回void。
它立即執行firebase查詢併成功時,中斷圖像刪除observable。
這是正確的行爲嗎?或者我的代碼中有一個錯誤?
謝謝你的回答。這是我正在尋找的運營商。你有什麼建議什麼時候使用拉鍊,什麼時候不使用? – Arka
當您有數據逐行組合時,zip非常有用,但不能用作延續手段。 – akarnokd