Ich möchte mehrere Observables kombinieren/zusammenführen und wenn jeder von ihnen abgeschlossen ist, führen Sie eine schließlich Funktion. Der Operator merge
scheint jedes Abonnement parallel auszuführen, was ich brauche, aber wenn einer von ihnen einen Fehler auslöst, wird die Ausführung angehalten.rxjs5 Merge und Fehlerbehandlung
RxJS Version 4 hat einen Operator mergeDelayError, die alle Abonnements Ausführung bis alle von ihnen sind abgeschlossen halten sollte, aber dieser Operator in Version 5 nicht implementiert.
Sollte ich zu einem anderen Operator zurückkehren?
var source1 = Rx.Observable.of(1,2,3).delay(3000);
var source2 = Rx.Observable.throw(new Error('woops'));
var source3 = Rx.Observable.of(4,5,6).delay(1000);
// Combine the 3 sources into 1
var source = Rx.Observable
.merge(source1, source2, source3)
.finally(() => {
// finally is executed before all
// subscriptions are completed.
console.log('finally');
});
var subscription = source.subscribe(
x => console.log('next:', x),
e => console.log('error:', e),
() => console.log('completed'));
JSBin
Danke - der 'Fang' scheint jedoch nicht zu funktionieren. Stattdessen habe ich einfach alles mit 'onErrorResumeNext' gemappt, was in meiner Situation okay ist. – null
@null Der Operator 'catch()' funktioniert nicht wie? Ich denke, es sollte funktionieren ... – martin
Ich bin mir nicht sicher warum. Siehe hierzu JSBin: [http://jsbin.com/qaluyaq/edit?js,console](http://jsbin.com/qaluyaq/edit?js,console) – null