2017-08-24 49 views
0

forループ内で複数回タスクを実行する必要があります。タスク自体はObservable<Void>を返します。私は継続的に購読することによって予期せぬエラーに遭遇するかもしれないと感じています。 for-loopでn回購読することはできますか?RxSwift forループ内の同じObservableへの複数のサブスクリプション

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) 
    } 
} 
+1

「観測」を、すなわち、機能プログラミング制御フロー 解決策、すなわちループのための置換、if/else、およびそのようなものである。関数型プログラミングと命令型プログラミングを混在させることは、ほとんど有益ではありません。 –

答えて

0

なぜfor-loopを使用しますか? RxSwiftには、お使いになることができる興味深いソリューションがたくさんあります。

だから、あなたがsubscribeを呼び出すことなく観測の配列にそれらをmapすることができ、いくつかのタスクを持っている:そして

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) 
関連する問題