讲解rxJava中的下游和上游

mih*_*o39 4 java android

我不太了解Rxjava 中下游上游含义。这意味着什么?它等效于subscribeOnobservableOn吗?

Kha*_*rda 10

我们可以通过基于运算符查看流的位置来对其进行划分。

         upstream          downstream
source <--------- operator -----------> consumer/further operators
Run Code Online (Sandbox Code Playgroud)

因此,从顶部到操作员,我们称其为上游。

从运算符到底部,我们称其为下游。

它不等于subscribeOnobserveOnsubscribeOn并且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))
Run Code Online (Sandbox Code Playgroud)

将使所有流(上下)在计算线程上运行。

另一方面,observeOn仅影响下游。observeOn在此代码上

just("Some String")
  .map(str -> str.length())
  .observeOn(Schedulers.computation()) // change thread
  .map(length -> 2 * length)
  .subscribe(number -> Log.d("", "Number " + number))
Run Code Online (Sandbox Code Playgroud)

仅使下游在计算线程上运行。

我希望解释会有所帮助。