RxSwift 在 for 循环中对同一个 Observable 的多个订阅

RxSwift Multiple subscriptions to same Observable in for-loop

我需要在 for 循环中多次执行一个任务。任务本身 returns 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)
    }
}

为什么要使用 for 循环? RxSwift 有很多有趣的解决方案可供您使用。

所以你有一些任务,你可以 map 它们进入一个可观察数组而不调用 subscribe:

let observables: [Observable<Void>] = locations.map({ ... })

然后处理所有的错误:

Observable
    .merge(observables.map({ [=11=].materialize() }))
    .flatMap({ Observable.from(optional: [=11=].error) })
    .subscribe(onNext: { (error) in
        // Handle error
    })
    .disposed(by: disposeBag)