只从Observable获取一个值

时间:2016-02-19 20:40:35

标签: swift reactive-programming rx-swift

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

假设我有一个值,我希望随着时间的推移观察,例如一个温度。因此,有许多情况和地点我订阅此值以对更改做出反应。没问题!

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

if temperatue > 5 {
    // do something
}

所以我只想对该值做出决定/操作,或者至少基于该值。这让我接近使用shareReplay observable。但即使我只想使用它一次,我还需要订阅该值吗?

或者这种做法是否错误?我将如何使用该用例(随时间变化的值与仅访问最后一次的值)?我需要消息来源,一个感冒吗?

1 个答案:

答案 0 :(得分:2)

使用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)
    }
}