【发布时间】:2016-02-08 11:04:20
【问题描述】:
想象一个用户配置文件,它允许编辑 name、surname、age 和 avatarImage 等字段。当用户单击Save 时,会针对已更改的每个值发送请求。
现在请考虑带有类似签名的函数:
func rx_updateUserName(name: String) -> Observable<UpdateUserNameResponse>
func rx_updateSurname(surname: String) -> Observable<UpdateSurnameResponse>
func rx_updateAge(age: Int) -> Observable<UpdateAgeResponse>
通常我们只会zip这样的请求:
let nameReqObservable = rx_updateUserName("Gandalf")
let surnameReqObservable = rx_updateSurname("The White")
let ageReqObservable = rx_updateAge(123)
let zippedRequests = Observable.zip(nameReqObservable, surnameReqObservable, ageReqObservable,
resultSelector: { (userNameResponse, surnameResponse, areResponse) in
return (userNameResponse, surnameResponse, areResponse)
}).subscribeNext(...)
当我只想对已更改的值执行请求时该怎么办?
【问题讨论】:
-
你是说当保存时你有三个字段,每个字段生成一个值?
-
点击保存时,我想根据检查姓名、姓氏或年龄是否已更改,预先选择必须发出的请求。
-
这不是我问的。我想知道当你点击保存时,你是否有 3 个 observable,每个都产生一个值?
-
每一个都有自己的价值,是的。
-
这有点奇怪。为什么不只拥有一个同时产生所有三个值的 observable 并避免你正在做的所有压缩?毕竟,它是基于点击保存按钮的单个事件。
标签: swift reactive-programming reactive-cocoa rx-swift reactivex