从 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)
}
}
我从 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)
}
}