3

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

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

但是当我只需要最新值时,也有一些用例,例如:

if temperatue > 5 {
    // do something
}

所以我只想对该值或至少基于该值进行决策/操作。这促使我接近使用 shareReplay 可观察对象。但是,即使我只想使用一次,是否也需要订阅该值?

还是这种方法完全错误?我将如何处理该用例(随时间推移的值与仅访问最后一个值一次)?我需要来源,一热一冷吗?

4

1 回答 1

3

使用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)
    }
}
于 2016-02-20T08:11:14.777 回答