RxAndroid ile RxJava ve Android uygulamasında kullanıyorum. İki retro uygun ağ görüşmesini bir gözlenebilir olarak birleştirmek için mergeDelayError kullanıyorum, ya biri yandığında yayılan öğeleri işleyecek ve ya bir tane varsa, hata. Bu çalışmıyor ve yalnızca bir hatayla karşılaştığında onError eylemini başlatıyor. Şimdi bunu test etmek için çok basit bir örneğe geçtim ve hala bir onError çağrısı olduğunda successAction hiçbir zaman çağrılmıyor. Aşağıdaki örneğe bakın.Rx Java mergeDelayError beklendiği gibi çalışmıyor
Observable.mergeDelayError(
Observable.error(new RuntimeException()),
Observable.just("Hello")
)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.finallyDo(completeAction)
.subscribe(successAction, errorAction);
Başarı eylemi, yalnızca iki başarı gözlenebilirse kullanırsam çağrılır. MergeDelayError'un nasıl çalışması gerektiğini bir şeyle özlüyorum mu?
DÜZENLEME: Ben kaldırırsanız beklendiği gibi observeOn
ve subscribeOn
her şey çalışıyor olduğunu tespit ettik
. Rx kullanmanın tüm noktası olan konuları ve düşünceyi belirtmem gerekiyor. Bu Schedulers
'u neden belirtmek, davranışı bozar?
doc, 'kaynaklardan herhangi birinden gelen bir Uyarı bildirimi, (...) birleştirilmiş Gözlemlenebilir'i sonlandırır.” ifadesi, tüm hataların tamamlanmasından sonra tüm hataların erteleneceği ve daha sonra kovulur, tamamlanmadan gözlemlenebilir sonlandırılır. – njzk2
Yani gerçekten bir kez 'successAction' almalısınız, sonra hata eylemi. (ama tam değil) – njzk2
Başarının çağrılmadığını nasıl iddia ediyorsunuz? – njzk2