Я не очень понимаю значение downstream и upstream в Rxjava. Что это значит? Это эквивалентно подписке и наблюдению?
Мы можем разделить поток, увидев его позицию на основе оператора.
upstream downstream
source <--------- operator -----------> consumer/further operators
Таким образом, сверху до оператора, мы называем это вверх по течению.
От оператора к низу, мы называем это вниз по течению.
Это не эквивалентно subscribeOn
и observeOn
. subscribeOn
и observeOn
только операторы. Однако мы можем различить поведение этих двух операторов, используя концепцию нисходящего и восходящего потоков.
subscribeOn
влияет на его вверх и вниз по течению. Например, subcsribeOn
на этот код
just("Some String")
.map(str -> str.length())
.subsribeOn(Schedulers.computation()) // change thread
.map(length -> 2 * length)
.subscribe(number -> Log.d("", "Number " + number))
заставит весь поток (вверх и вниз) работать в вычислительном потоке.
С другой стороны, observeOn
только за observeOn
вниз по течению. observeOn
этот код
just("Some String")
.map(str -> str.length())
.observeOn(Schedulers.computation()) // change thread
.map(length -> 2 * length)
.subscribe(number -> Log.d("", "Number " + number))
только запускать нисходящий поток в вычислительном потоке.
Я надеюсь, что объяснение поможет.