我对反应式编程很陌生,并且在我的应用程序中使用 Bond 和 ReactiveKit。我现在遇到了一个我无法弄清楚的问题。
问题是在某个页面上我必须上传一些图片,当所有图片都上传后,我想做点什么。
这是我到目前为止的代码:
func uploadImages(completionHandler: @escaping EmptyBlock) {
let datas = profileImages.value.compactMap { $0?.jpegData(compressionQuality: 0.6) }
let signals = datas.map { data in
return Signal<String, Error> { observer in
self.user.uploadImage(data: data) { result in
switch result {
case .success(let url):
observer.receive(url)
observer.receive(completion: .finished)
case .failure(let error):
observer.receive(completion: .failure(error))
}
}
return SimpleDisposable(isDisposed: false)
}
}
// What can I do with `signals`?
}
所以我有一个属性profileImages
,它是 UIImage 数组的 Observable。执行时uploadImages
,我想使用一个函数上传所有图像user.uploadImage
,当所有上传完成后,我想调用completionHandler
该uploadImages
函数。
此时我有一组信号,但我不知道如何观察所有信号,或者将它们组合成一个信号的方法?