Получите только одно значение от Observable

Я начинаю в RxSwift из ReactiveCocoa. У меня концептуальный вопрос.

Допустим, у меня есть значение, которое я хочу наблюдать с течением времени, например темперамент. Так что есть много случаев и мест, где я подписываюсь на это значение, чтобы реагировать на изменения. Без проблем!

Но есть также случаи, когда мне просто нужно последнее значение, например:

if temperatue > 5 {
    // do something
}

Итак, я просто хочу принять решение / операцию над этим значением или, по крайней мере, на основе этого значения. Это приближает меня к использованию наблюдаемого shareReplay. Но нужно ли мне подписываться на это значение, даже если я просто хочу использовать его один раз?

Или это вообще неправильный подход? Как мне сделать этот вариант использования (значение с течением времени или доступ к последнему значению только один раз)? Нужны ли мне источники, один горячий, другой холодный?


person beseder    schedule 19.02.2016    source источник


Ответы (1)


Используйте 1_:

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)
    }
}
person Evgeny Sureev    schedule 20.02.2016
comment
Спасибо! Я надеялся на что-то с меньшими накладными расходами, но, похоже, это возможно. - person beseder; 22.02.2016