美文网首页
RxSwift笔记 - Subjects

RxSwift笔记 - Subjects

作者: 芝麻酱的简书 | 来源:发表于2019-07-05 10:11 被阅读0次

    Subjects既是订阅者Observer,也是可观察序列Observable

    一共有四种 Subjects,分别为:

    • PublishSubject
    • BehaviorSubject
    • ReplaySubject
    • Variable

    Subject常用的几个方法:

    • onNext(:):on(.next(:))的简便写法。该方法相当于 subject 接收到一个.next 事件。
    • onError(:):on(.error(:))的简便写法。
    • onCompleted():on(.completed)的简便写法。

    四种Subject的相同之处:

    • 首先他们都是 Observable,他们的订阅者都能收到他们发出的新的 Event。
    • 直到 Subject发出.complete或者.error 的 Event后,该 Subject便终结了,同时它也就不会再发出.next事件。
    • 对于那些在 Subject 终结后再订阅他的订阅者,也能收到 subject发出的一条 .complete.errorevent,告诉这个新的订阅者它已经终结了。
    • 他们之间最大的区别只是在于:当一个新的订阅者刚订阅它的时候,能不能收到Subject以前发出过的旧Event,如果能的话又能收到多少个。

    四种Subject的不同点:

    • PublishSubject
      它不需要初始值就能创建。
      PublishSubject 的订阅者从他们开始订阅的时间点起,可以收到订阅后 Subject发出的新 Event,而不会收到他们在订阅前已发出的 Event

    • BehaviorSubject
      BehaviorSubject 需要通过一个默认初始值来创建。
      当一个订阅者来订阅它的时候,这个订阅者会立即收到 BehaviorSubjects上一个发出的event。之后就跟正常的情况一样,它也会接收到 BehaviorSubject 之后发出的新的event

    • ReplaySubject
      ReplaySubject在创建时候需要设置一个bufferSize,表示它对于它发送过的 event的缓存个数。
      如果一个 subscriber订阅已经结束的ReplaySubject,除了会收到缓存的 .nextevent外,还会收到那个终结的.error 或者.completeevent

    • Variable其实就是对BehaviorSubject 的封装

    相关文章

      网友评论

          本文标题:RxSwift笔记 - Subjects

          本文链接:https://www.haomeiwen.com/subject/wucshctx.html