当一个可观察对象出错时 ConcatMap 中断
ConcatMap interupted when error in one observable
我有以下代码:
Observable.from(modifiedNodes)
.concatMap(node => {
return this.Model.setData(node);
})
.subscribe(() => {
NodeSaved++;
}
如果setData
对任何中间节点抛出错误,则不会恢复下一个节点序列。我们如何修改它,以便即使一个节点出现错误,也会执行下一个节点序列?我读到了 onErrorResumeNext
,但我不确定如何在这里使用它。
setData
的方法签名如下:
public setData(node: INode): Observable<Object>{}
如果 setData
return 是一个可观察对象,您可以使用 catch
运算符。它会收到从 setData
中抛出的任何错误,如果你 return 一个空的可观察对象,concatMap
将移动到序列中的下一个节点:
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++; });
我有以下代码:
Observable.from(modifiedNodes)
.concatMap(node => {
return this.Model.setData(node);
})
.subscribe(() => {
NodeSaved++;
}
如果setData
对任何中间节点抛出错误,则不会恢复下一个节点序列。我们如何修改它,以便即使一个节点出现错误,也会执行下一个节点序列?我读到了 onErrorResumeNext
,但我不确定如何在这里使用它。
setData
的方法签名如下:
public setData(node: INode): Observable<Object>{}
如果 setData
return 是一个可观察对象,您可以使用 catch
运算符。它会收到从 setData
中抛出的任何错误,如果你 return 一个空的可观察对象,concatMap
将移动到序列中的下一个节点:
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++; });