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
添加了导入。