当前位置: 首页 > 文档资料 > RxSwift 中文文档 >

BehaviorSubject

优质
小牛编辑
134浏览
2023-12-01

BehaviorSubject

当观察者对 BehaviorSubject 进行订阅时,它会将源 Observable 中最新的元素发送出来(如果不存在最新的元素,就发出默认元素)。然后将随后产生的元素发送出来。

如果源 Observable 因为产生了一个 error 事件而中止, BehaviorSubject 就不会发出任何元素,而是将这个 error 事件发送出来。


演示

let disposeBag = DisposeBag()
let subject = BehaviorSubject(value: "")

subject
  .subscribe { print("Subscription: 1 Event:", $0) }
  .disposed(by: disposeBag)

subject.onNext("")
subject.onNext("")

subject
  .subscribe { print("Subscription: 2 Event:", $0) }
  .disposed(by: disposeBag)

subject.onNext("️")
subject.onNext("️")

subject
  .subscribe { print("Subscription: 3 Event:", $0) }
  .disposed(by: disposeBag)

subject.onNext("")
subject.onNext("")

输出结果:

Subscription: 1 Event: next()
Subscription: 1 Event: next()
Subscription: 1 Event: next()
Subscription: 2 Event: next()
Subscription: 1 Event: next(️)
Subscription: 2 Event: next(️)
Subscription: 1 Event: next(️)
Subscription: 2 Event: next(️)
Subscription: 3 Event: next(️)
Subscription: 1 Event: next()
Subscription: 2 Event: next()
Subscription: 3 Event: next()
Subscription: 1 Event: next()
Subscription: 2 Event: next()
Subscription: 3 Event: next()