Ala*_*man 5 behaviorsubject swift rx-swift behaviorrelay
据我所知,BehaviorRelay被取代Variable,两者BehaviorSubject并BehaviorRelay开始与初始值,和重放,或最新值给用户。
那有什么区别呢?在哪种情况下,您会使用一个?
需要使用默认初始值创建BehaviorSubject\n当订阅者来订阅它时,订阅者将立即收到BehaviorSubjects 发出的最后一个事件。之后,就像正常情况一样,它也会收到BehaviorSubject之后发出的新事件
\n//Create a BehaviorSubject\nlet subject = BehaviorSubject(value: "111")\n \n//Subscribe for the first time subject\nsubject.subscribe {event in\n print("The first subscription:", event)\n}.disposed(by: disposeBag)\nRun Code Online (Sandbox Code Playgroud)\nBehaviourRelay 是作为 Variable 的替代品出现的。它的本质其实是对BehaviorSubject的封装,所以它也必须通过一个默认的初始值来创建\nBehaviorRelay具有BehaviorSubject的功能,可以将最后一个事件和新创建的事件发送给它的订阅者\n与BehaviorSubject不同的是,BehaviorRelay会自动发送销毁时会产生 .complete 事件,你可以\xe2\x80\x99手动完整的发送完成或错误事件到BehaviorReply来结束它。\nBehaviorRelay 有一个 value 属性,通过它我们可以获得最新的值。可以通过其accept()方法修改该值
\n//Create a BehaviorRelay with an initial value of 111\nlet subject = BehaviorRelay<String>(value: "111")\n \n//Modify value\nsubject.accept("222")\n \n//The first subscription\nsubject.asObservable().subscribe {\n print("1st subscription:", $0)\n}.disposed(by: disposeBag)\n \n//Modify value\nsubject.accept("333")\nRun Code Online (Sandbox Code Playgroud)\n如果要将新值合并到原始值,可以将accept()方法与value属性结合使用。(这个常用的形式是上拉加载函数,BehaviorRelay用来保存所有加载的数据)
\n| 归档时间: |
|
| 查看次数: |
3862 次 |
| 最近记录: |