Wie funktioniert der HTTP-Fehler-Handhabung arbeiten mit observablen?

Sehe ich eine Menge von tutorials zu tun so etwas wie dieses:

http.get("...").subscribe(
  success => console.log('hello success'),
  error => console.log('bye error')
);

Ich weiß nicht, wie das funktioniert, da gibt es keine Arten oder etwas, jedoch ich habe versucht zu tun, die mich und die ich am Ende, dass die Anfrage geht immer zu Erfolg, auch wenn ich einen Fehler. Was ist das problem?

Störenfried:

this.memberService.create(this.currentMember)
      .subscribe(
        success => {
          let mem: Member = success.json() as Member;
          if (this.selectedOrganization) {
            this.addMemberToOrganization(mem);
          } else if (this.selectedServiceProvider) {
            this.addMemberToServiceProvider(mem);
          } else {
            this.toastsService.error("lbl_users_service_provider_and_organization_undefined");
          }
        },
        error => console.log(error)
      );

Create-Methode in den memberService:

  create(member: Member): Observable<any> {
    return this.http
      .post(this.RESOURCE_BASE_URL, member)
      .map(response => {
        if (response.status === 200) this.toastsSerivce.success(this.translateService.instant('lbl_users_member_created'));
        return response;
      })
      .catch(error => this.toastsSerivce.error(this.translateService.instant('lbl_users_member_create_failed')));
  }

Ich auch den Fehler abzufangen, aber die subscribe Teil scheint nicht zu kümmern.
Es scheitert an success.json(), denn wenn es ein Fehler ist, es gibt keine json. Aber wenn es ein Fehler ist, will ich es nennen, die error =>... statt der success. Jede Beratung wird sehr geschätzt.

an deiner Stelle würde ich überprüfen innen "abonnieren" - Rückruf: if(Daten.Fehler)
Ich könnte das machen, aber das fühlt sich nicht wie der richtige Weg. Winkel hat das error-handling eingebaut, aber ich weiß einfach nicht, wie es zu benutzen.
Wenn Sie sprechen über die Fehler, sprichst du von einem 4XX/5XX-code? Denn so eckig ist der eingebaute Http-Fehler erkennt.
Mindestens ein status-code, aber in der Regel auch eine Ausnahme-Meldung, soweit ich weiß. Aber wie auch immer, ich würde mich freuen, wenn es würde sogar erkennen, dass es ein Fehler ist.
ich denke, Sie sollten etwas bekommen, das werden wieder im inneren Ihrer "fangen" wie "Rückkehr zu Beobachten.werfen(errMsg);" statt toast...

InformationsquelleAutor codepleb | 2017-06-06

Schreibe einen Kommentar