2017-06-06 3 views
1

に、私はここでConcatMapがsetDataメソッドは、任意の中間ノードのエラーを投げている場合は、エラーが1観測可能

`Observable.from(modifiedNodes) 
         .concatMap(node => { 

          return this.Model.setData(node); 
         }) 
         .subscribe(
         () => { 
          NodeSaved++; 
         }` 

の下に私のコードを追加していたときにinterupted、ノードの次のシーケンスが再開取得されていません。 1つのノードのエラーであっても、ノードの次のシーケンスが実行されるように、どのように変更できますか?私は 'onerrorResumeNext'について読んだけど、ここでそれを使う方法はわからない? ヘルプが便利です。 setDataが観測を返す場合、あなたはcatch演算子を使用することができます

public setData(node: INode): Observable<Object>{} 
+0

少なくともその問題の署名。 – cartant

+0

@cartant setdata()のシグネチャを追加しました。あなたのお返事ありがとうございました – HardRocker

答えて

2

のsetData()がようです。それはsetData内からスローされたすべてのエラーを受け取ることになりますし、あなたが空に観察を返す場合、concatMapは、シーケンス内の次のノードに移動します:あなたがに含める必要がありますので、答えは、どのような `setData`リターンに依存する

import 'rxjs/add/observable/empty'; 
import 'rxjs/add/operator/catch'; 

Observable 
    .from(modifiedNodes) 
    .concatMap(node => this.Model 
    .setData(node) 
    .catch(error => Observable.empty()); 
) 
    .subscribe(() => { NodeSaved++; }); 
+0

助けてくれてありがとう。唯一のことは、私はobserableableの代わりに空の()メソッドを見つけることができなかった、私はObservable.of()を使って私のために働いた。 – HardRocker

+0

「空」のインポートも追加されました。 – cartant

関連する問題