AsyncSubject 将在源 Observable 产生完成时间之后,发出最后一个元素(有且仅有最后一个元素)。如果源 Observable 没有发出任何元素,只有一个完成事件,则AsyncSubject也只有一个完成事件。
PublishSubject 将对观察者发送订阅后产生的元素,而在订阅前发出的元素将不会发送给观察者。订阅者只能接收订阅后的事件,适合发送新的事件 let subject = PublishSubject<String>()
ReplaySubject 将对观察者发送全部的元素,无论观察者是何时进行订阅的。 let subject = ReplaySubject<String>.create(bufferSize: 1)
当观察者对 BehaviorSubject 进行订阅时,它会将源 Observable 中最新的元素发送出来(如果不存在最新的元素,就发出默认元素)。然后将随后产生的元素发送出来。如果源 Observable 因为产生了一个 error 事件而中止, BehaviorSubject 就不会发出任何元素,而是将这个 error 事件发送出来。let subject = BehaviorSubject(value: "abc")