0
我想壓縮兩個observables,在這種情況下是一個計時器任務和一個實際的任務,以便我的訂閱者只有在兩個任務完成時才被調用。我想用Observable.zip
來做到這一點,但不知何故,這不起作用,我的Observable.timer
不叫onComplete()
。這意味着用戶永遠不會得到Observables
的結果。Observable.zip與Observable.timer
當我將zip
更改爲merge
突然Observable.timer
的確稱爲onComplete()
,我在這裏丟失了什麼?
Observable<Long> delayObs = Observable.timer(500, TimeUnit.MILLISECONDS);
Observable<Void> methodObs = method();
mSubscription = Observable.zip(delayObs, methodObs, (pLong, pVoid) -> pVoid)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(__ -> thisDoesntGetCalled(), throwable -> M2Log.e(LOG_TAG,
"error", throwable));
的方法:
private Observable<Void> method() {
return Observable.defer(() -> {
// some work
return Observable.empty();
});
}
我失去了一些東西在這裏?
郵編結合的值,但是你的方法()的可觀察到不排放任何東西,因此壓縮決定它不會能夠結合任何東西,然後完成。 – akarnokd
謝謝!這實際上是有道理的。如果你發佈這個答案,我會接受它。 –