一个 Observable() 可以处理两种情况下的订阅吗?
Can one Observable() handle the Subscribe for two situations?
我正在将响应式编程应用于 Unity3D 项目。
在 InputField 中输入一个字符可以启用该按钮,如果没有字符则禁用该按钮。
可以使用 UniRx.Observable 在一个流中处理此逻辑吗?
inputID.OnValueChangedAsObservable()
.Where(x => string.IsNullOrEmpty(x) == false)
.Subscribe(_ => buttonLogin.gameObject.SetActive(true));
inputID.OnValueChangedAsObservable()
.Where(x => string.IsNullOrEmpty(x) == true)
.Subscribe(_ => buttonLogin.gameObject.SetActive(false));
能否将这两种逻辑合二为一?
请回复。谢谢。
是的,您可以使用 Map
运算符。
http://reactivex.io/documentation/operators/map.html
"transform the items emitted by an Observable by applying a function to each item"
将 Where
替换为 Map
,在地图运算符内部,您将收到 x
变量和 return 来自 [=14] 的布尔值=] 检查。该布尔值将作为订阅中的变量传入,您可以直接在 setActive
中使用。
我正在将响应式编程应用于 Unity3D 项目。
在 InputField 中输入一个字符可以启用该按钮,如果没有字符则禁用该按钮。 可以使用 UniRx.Observable 在一个流中处理此逻辑吗?
inputID.OnValueChangedAsObservable()
.Where(x => string.IsNullOrEmpty(x) == false)
.Subscribe(_ => buttonLogin.gameObject.SetActive(true));
inputID.OnValueChangedAsObservable()
.Where(x => string.IsNullOrEmpty(x) == true)
.Subscribe(_ => buttonLogin.gameObject.SetActive(false));
能否将这两种逻辑合二为一?
请回复。谢谢。
是的,您可以使用 Map
运算符。
http://reactivex.io/documentation/operators/map.html
"transform the items emitted by an Observable by applying a function to each item"
将 Where
替换为 Map
,在地图运算符内部,您将收到 x
变量和 return 来自 [=14] 的布尔值=] 检查。该布尔值将作为订阅中的变量传入,您可以直接在 setActive
中使用。