I don't really understand the meaning of downstream and upstream in Rxjava. What does that mean? Is it equivalent to subscribeOn and observableOn?
We can divide stream by seeing its position based on an operator.
upstream downstream
source <--------- operator -----------> consumer/further operators
So from top to the operator, we call it upstream.
From operator to the bottom, we call it downstream.
It's not equivalent to subscribeOn and observeOn. subscribeOn and observeOn are only operators. However, we can distinguish the behaviour of that two operators by using downstream and upstream concept.
subscribeOn is affecting its upstream and downstream. For example, subcsribeOn on this code
just("Some String")
.map(str -> str.length())
.subsribeOn(Schedulers.computation()) // change thread
.map(length -> 2 * length)
.subscribe(number -> Log.d("", "Number " + number))
will make all the stream (up and down) run on computation thread.
On the other hand, observeOn only affecting downstream. observeOn on this code
just("Some String")
.map(str -> str.length())
.observeOn(Schedulers.computation()) // change thread
.map(length -> 2 * length)
.subscribe(number -> Log.d("", "Number " + number))
only make the downstream run on computation thread.
I hope the explanation will help.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With