Ich versuche, das Verhalten der Observable von angular2 http.get() -Methode zurückgegeben zu verstehen. Mein entsprechender Code ist hier ...Shared Observable Fehlerbehandlung Problem
let observable = this.http.get(this.url)
if (this.share) {
observable = observable.share();
}
if (this.firstHandle) {
observable.subscribe(result => {
this.result = result._body;
},
err => {
this.error = err;
});
} else {
observable.subscribe(result => {
this.result = result._body;
});
}
observable.subscribe(result => {
this.result2 = result._body
},
err => {
this.error2 = err;
})
Wenn this.share wahr ist und this.firstHandle falsch ist dann der obige Code verhält sich nicht wie ich erwarten würde. Der Fehler wird im zweiten Abonnementanruf nicht behandelt. Alle anderen Fälle verhalten sich wie erwartet. Hier ist eine plunkr zeigt das Verhalten. Beachten Sie, dass der letzte Fall den Fehler eines ungültigen Anrufs nicht anzeigt. Ich versuche nur den Grund dafür zu verstehen.
Vielen Dank im Voraus.
Aber das ist das Seltsame. Es ** sieht ** ** wenn ** ich den Fehler im ersten Abonnement behandle, ** ** nicht ** wenn ich nicht. Es scheint mir, dass die Logik, die sie verwendeten, war, wenn Ihr erster Abonnent nicht an dem Fehler interessiert ist, als kein anderer Abonnent. Ich verstehe das nicht. – crowmagnumb
Ich denke, Share könnte einen anderen Zweck in RxJS haben. Ich denke, der Effekt, nach dem Sie suchen, könnte sein, dass Sie ein Connectable Observable erstellen und den Publish-Operator dafür verwenden. Wieder bin ich im selben Boot, um zu versuchen, meinen Kopf um all das neue Zeug Angular 2 zu wickeln. – Frank