从 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&lt;Thing?&gt; 但返回 nil。

【问题讨论】:

注意...Observables 和 Subjects 应该是 lets 而不是 vars。 【参考方案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 的服务中获取值

如何从 Observable Array 嵌套对象中获取值

MVVM:将带有 Observable 集合的命令绑定到 Listbox 并从文本框中获取值

Observable 在 display 、 ionic app 和 angular fire 从 firestore 获取值后失去价值