Mam strumień z częstymi wartościami i jeden z wolniejszymi. Chcę je łączyć, ale emitować wartość tylko wtedy, gdy emituje wolniejszą. Więc combineLatest
nie działa. tak:CombineLatest emituje tylko wtedy, gdy zmienia się jeden ze strumieni
a1
a2
b1
(a2,b1)
a3
a4
a5
b2
(a5,b2)
Obecnie robię to jak następuje, jest tam czystsze sposób?
withLatest[A,B](fast : Observable[A], slow : Observable[B]): Observable[(A,B)] =
Observable({ o =>
var last : A
fast.subscribe({a => last = a})
slow.subscribe({b => o.onNext((last,b))})
})
edit: Ten operator jest teraz w Rx i nazywa withLatestFrom.
Przepraszamy. Moja poprzednia odpowiedź jest błędna. Usunąłem to. – zsxwing
Zadałem właśnie to pytanie na trackerze problemów RxJavy: https://github.com/ReactiveX/RxJava/issues/405 Ale odpowiedzi nie były satysfakcjonujące ... –