从 Observable 获取最后一个值
Posted
技术标签:
【中文标题】从 Observable 获取最后一个值【英文标题】:Get last value from Observable 【发布时间】:2019-02-03 20:43:10 【问题描述】:如何使用combineLatest
来返回BehaviorSubject
?我正在尝试从 observable 中获取最后一个值。
var things: Observable<Thing>
// driven by UI
var selectedThingIndex: PublishSubject<Int>
// this is a BehaviorSubject, because I need to get the latest value outside a subscriber
var currentThing: BehaviorSubject<Thing> = BehaviorSubject.combineLatest(things, selectedThingIndex) things, index in
things[index]
// Get the last value
let thing = currentThing.value()
我无法编译它,因为combineLatest
返回一个Observable
,它似乎不能转换为BehaviorSubject
。我尝试了一个明确的演员,例如as? BehaviorSubject<Thing?>
但返回 nil。
【问题讨论】:
注意...Observable
s 和 Subject
s 应该是 let
s 而不是 var
s。
【参考方案1】:
您必须创建 BehaviorSubject,然后将您的组合 observable 绑定到它:
let currentThing = BehaviorSubject<Thing?>(value: nil)
Observable.combineLatest(things, selectedThingIndex) $0[$1]
.bind(to: currentThing)
.disposed(by: bag)
【讨论】:
以上是关于从 Observable 获取最后一个值的主要内容,如果未能解决你的问题,请参考以下文章
从其他 Observable 获取值的 Rx Observable
RxSwift 从 Observable 序列中的一项获取值
如何从使用 RxSwift 返回 Observable 的服务中获取值
MVVM:将带有 Observable 集合的命令绑定到 Listbox 并从文本框中获取值
Observable 在 display 、 ionic app 和 angular fire 从 firestore 获取值后失去价值