代码之家  ›  专栏  ›  技术社区  ›  Luke

RxJS中的订阅是什么?可观测数据是如何与它们交互的?

  •  0
  • Luke  · 技术社区  · 6 年前

    我不太清楚观察和订阅是如何工作的。特别是一个可观察对象及其订阅如何交换信息。

    所以要问清楚问题:

    • 可观测数据是否保留对其订阅的引用?
    • 一个可观察的数据是在订阅中“放入”数据还是订阅“轮询”其可观察数据?
    • 信息交换是如何进行的?
    2 回复  |  直到 6 年前
        1
  •  2
  •   ggradnig    6 年前

    一个 Subscription 是一个 Observer Observable . 它是一个只能用来 unsubscribe 从可观察到的。当退订时,观察员将不会收到任何进一步的排放。

    这个 (您可能将其称为订阅)是在调用 Observable.subscribe(next, error, complete) . 你会收到 当使用 Observable.create() . 否则,你就抓不住了。观察者持有 next(value => void) , error(error => void) complete(_ => void) 被观察者用来传达状态变化的函数。

    交换信息只发生在一个方向上。观察者总是向观察者发出信号,而不是反过来。

    不,它总是提到 Observers ,但这可能就是你的意思。

    也没有对它订阅的可观测数据的引用。

    可观察到的“puts”(更好的词是“emits”)值 . 有 从未 任何来自可观察对象的轮询,因为这将违反RxJS的基本原理。一个例外是 BehaviourSubject.getValue()

    信息交换是如何进行的?

    这取决于可观察到的。一般来说 可观察的 保存一个所有 观察员 打电话给他们 next() 每当发出新值时 error() 发生错误时的函数 complete()

        2
  •  1
  •   LkPark    6 年前

    基本上,您的问题与更一般的观察者模式有关,这里有一篇关于 example 或更普遍的用途 example 你会得到你所有的答案。