【发布时间】:2020-11-17 06:31:13
【问题描述】:
我在ReactiveSwift 中有一个用于上传的管道。我想确保即使其中一个上传失败,其余的也不会被中断。
在所有这些都成功或失败后,我应该从performUploads 方法返回成功,或者如果有任何失败,我应该返回一个错误,所以下一步,下载部分不会开始。即使有错误,所有上传都应该有机会上传,不应该停止。
有没有办法判断上传完成后是否有任何错误? 方法见这里:
let pendingUploadItemsArray: [Items] = ...
func performUploads() -> SignalProducer<(), MyError> {
return upload(pendingUploadItemsArray)
.then(doAnything())
}
private func upload(_ items: [Items]) -> SignalProducer<Signal<(), MyError>.Event, Never> {
let producers = items
.filter { item in
return item.readyForUpload
}
.map { self.upload($0).materialize() }
return SignalProducer.merge(producers)
}
private func upload(_ item: Item) -> SignalProducer<(), MyError> {
return internalUploader.upload(item)
.on(failed: failedToUpload(item),
value: successfullyUploaded(item))
.ignoreValues()
}
internalUploader上传方法在哪里:
func upload(_ item: Item) -> SignalProducer<Any, MyError>
然后在另一个班级中,您将调用此上传者:
let sync = self.uploader.performUploads()
.then(startDownloads())
startDownloads 只有在所有上传都成功完成后才能运行。
感谢您提供任何见解。
这可能应该以完全不同的方式完成。
【问题讨论】:
标签: ios swift reactive-swift