AsyncSubject

AsyncSubject - 图1

AsyncSubject 将在源 Observable 产生完成事件后,发出最后一个元素(仅仅只有最后一个元素),如果源 Observable 没有发出任何元素,只有一个完成事件。那 AsyncSubject 也只有一个完成事件。

AsyncSubject - 图2

它会对随后的观察者发出最终元素。如果源 Observable 因为产生了一个 error 事件而中止, AsyncSubject 就不会发出任何元素,而是将这个 error 事件发送出来。


演示

  1. let disposeBag = DisposeBag()
  2. let subject = AsyncSubject<String>()
  3. subject
  4. .subscribe { print("Subscription: 1 Event:", $0) }
  5. .disposed(by: disposeBag)
  6. subject.onNext("?")
  7. subject.onNext("?")
  8. subject.onNext("?")
  9. subject.onCompleted()

输出结果:

  1. Subscription: 1 Event: next(?)
  2. Subscription: 1 Event: completed