从 Observable 中只获取一个值

Get only one value from Observable

我从 RxSwift 开始,来自 ReactiveCocoa。我有一个概念性的问题。

假设我有一个我想随时间观察的值,例如一个温度。所以有很多情况和地方我订阅这个值来对变化做出反应。没问题!

但也有我只需要最新值的用例,例如:

if temperatue > 5 {
    // do something
}

所以我只想对该值或至少基于该值执行 decision/operation。这让我接近于使用 shareReplay observable。但是,即使我只想使用一次,我是否需要订阅该值?

或者这种方法根本就错了?我将如何处理该用例(随时间变化的值与仅访问最后一个值一次)?我需要资源吗,一热一冷?

使用Variable:

class SomeClass {
    let temperature = Variable<Int>(50)

    func doSomething() {
        if temperature.value > 50 {
            print("something")
        }
    }

    func subscribeToTemperature() {
        temperature.asObservable.subscribeNext { t in
            print("Temperature now is \(t)")
        }.addDisposableTo(bag)
    }

    func setTemperature() {
        temperature.value = 20
    }

    func observeTemperature(t: Observable<Int>) {
        t.bindTo(temperature).addDisposableTo(bag)
    }
}