我不太了解 Rxjava 中下游和上游的含义。 这意味着什么?等同于 subscribeOn 和 observableOn ?
答案 0 :(得分:6)
我们可以根据运算符查看流的位置来对其进行划分。
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
上的代码
just("Some String")
.map(str -> str.length())
.observeOn(Schedulers.computation()) // change thread
.map(length -> 2 * length)
.subscribe(number -> Log.d("", "Number " + number))
仅使下游在计算线程上运行。
我希望解释会有所帮助。