I want to synchronously emit two Observable objects (which are asynchronous), one after the other where it returns the first emitted Observable object. If the first
I don't know Java, but the solution in Scala would probably be this, hope it is readable to you
import rx.lang.scala.Observable
class AccessToken
class Account
case class TokenAndAccount(token: AccessToken, account: Account)
val accessTokenSource = Observable.just(new AccessToken)
val accountSource = Observable.just(new Account)
accessTokenSource
.flatMap(token ⇒ accountSource.map(account ⇒ TokenAndAccount(token, account)))
.subscribe(tokenAndAccount ⇒ println(tokenAndAccount))
Basically flatMap
will make sure that the accountSource.map...
is used only after the token from accessTokenSource
has been emitted. Inside the accountSource.map
we combine the obtained token and account together for later usage in subscribe
.
flatMap
is one of the most useful operators, be sure to read it's docs and perhaps some tutorials.