Rxjs 当一个可观察到错误时,ConcatMap中断
我有以下代码:Rxjs 当一个可观察到错误时,ConcatMap中断,rxjs,observable,concatmap,Rxjs,Observable,Concatmap,我有以下代码: Observable.from(modifiedNodes) .concatMap(node => { return this.Model.setData(node); }) .subscribe(() => { NodeSaved++; } 如果setData为任何中间节点抛出错误,则不会恢复下一个节点序列。我们如何修改它,以便即使一个节点出现错误,也会执行下一个节点序列?我读过关于下一步的onerr
Observable.from(modifiedNodes)
.concatMap(node => {
return this.Model.setData(node);
})
.subscribe(() => {
NodeSaved++;
}
如果setData
为任何中间节点抛出错误,则不会恢复下一个节点序列。我们如何修改它,以便即使一个节点出现错误,也会执行下一个节点序列?我读过关于下一步的onerrorrumesumnext
,但我不知道如何在这里使用它
setData
的方法签名如下:
public setData(node: INode): Observable<Object>{}
publicsetdata(节点:INode):可观察{}
如果setData
返回一个可观察值,您可以使用catch
操作符。它将接收从setData
中抛出的任何错误,如果返回空的可观察对象,concatMap
将移动到序列中的下一个节点:
导入'rxjs/add/observable/empty';
导入“rxjs/add/operator/catch”;
可观察
.from(修改后的节点)
.concatMap(节点=>此.Model
.setData(节点)
.catch(错误=>Observable.empty())
)
.subscribe(()=>{NodeSaved++;});
答案取决于setData
返回的内容,因此您应该在问题中至少包含它的签名。@cartant I添加了setData()的签名。谢谢你的回复。谢谢你的帮助。唯一的问题是,我找不到observable的empty()方法,而是使用了observable.of(),它对我很有效。还为empty
添加了导入。