ConcatMap прервался, когда ошибка в одной наблюдаемой
Я добавил свой код ниже
`Observable.from(modifiedNodes)
.concatMap(node => {
return this.Model.setData(node);
})
.subscribe(
() => {
NodeSaved++;
}`
Здесь, если setdata выдает ошибку для какого-либо промежуточного узла, следующая последовательность узлов не возобновляется. Как мы можем изменить это так, что даже если ошибка для одного узла, будет выполнена следующая последовательность узлов. Я читал об 'onerrorResumeNext', но не уверен, как его использовать здесь? любая помощь будет полезна.
setdata() выглядит так:
public setData(node: INode): Observable<Object>{}
1 ответ
Решение
Если setData
возвращает наблюдаемое, вы можете использовать catch
оператор. Он будет получать любые ошибки изнутри setData
и если вы возвращаете пустую наблюдаемую, 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++; });