我需要在for循环中多次执行任务。任务本身返回Observable<Void>
。我觉得通过不断订阅可能会遇到一些意想不到的错误。 可以在for-loop
中订阅n次吗?
private func removeItem(from locations: Resource...) {
for resource in locations {
RemoveItemTask(id: item.value.id, resource: resource)
.execute(in: self.dispatcher)
.subscribe { event in
if let error = event.error {
self.error = Observable.of(error)
}
}.addDisposableTo(self.disposeBag)
}
}
答案 0 :(得分:0)
为什么要使用for-loop? RxSwift
有许多有趣的解决方案供您使用。
所以你有一些任务,你可以map
将它们放入一个可观察的数组中,而不需要调用subscribe
:
let observables: [Observable<Void>] = locations.map({ ... })
然后处理所有错误:
Observable
.merge(observables.map({ $0.materialize() }))
.flatMap({ Observable.from(optional: $0.error) })
.subscribe(onNext: { (error) in
// Handle error
})
.disposed(by: disposeBag)