Ben şu RxJava2 Kotlin kodu:RxJava Completabe andthen test
val tester = Completable.complete()
.andThen(SingleSource<Int> { Single.just(42) })
.test()
tester.assertComplete()
tester.assertValue(42)
Bu bir olsun operasyon Tek gözlenebilir (görüntü daha sonra Completable (bir API için basit güncelleme işlemini hayal) gözlemlenebilir ve sahip simüle API). İki gözlemciyi, Completable bittiğinde, Single çalıştığı ve nihayet gözlemcimde (Int 42) onSuccess olayını aldığım şekilde birleştirmek istiyorum. Bununla birlikte, bu sınama kodu çalışmıyor. iddiası aşağıdaki hata nedeniyle başarısız:
java.lang.AssertionError: Not completed
(latch = 1, values = 0, errors = 0, completions = 0))
ben yanlış yapıyorum anlamak mümkün değilim, Completable abonelik onComplete yayar ve sonra Tek abone ve benim gözlemci (tester
) alır bekliyoruz 42 değerine sahip bir onSuccess olayı, ancak aboneliğin hiçbir şey yaymayacak şekilde "askıya alınmış" kaldığı anlaşılıyor.
fikri bu blog yayınında bulunan birine benzer:
.andThen(SingleSource<Int> { Single.just(42) })
Beni anlayan bir SingleSource
oluşturun: https://android.jlelse.eu/making-your-rxjava-intentions-clearer-with-single-and-completable-f064d98d53a8
apiClient.updateMyData(myUpdatedData) // a Completable
.andThen(performOtherOperation()) // a Single<OtherResult>
.subscribe(otherResult -> {
// handle otherResult
}, throwable -> {
// handle error
});
Teşekkür akarnokd
veya ertelenmiş kullanımı o koda başlangıçta yaptığım çünkü '.andThen {Single.just (42) } 'hangi bir derleme değildi. – Miquel