Ich habe eine Komponente Klasse und Service-Klasse. Ich habe die Logik, ein Flag zu spiegeln, wenn http 200 Statuscode empfangen wird. Basierend auf der erhaltenen Antwort drehe ich die Flagge mit einer if-Bedingung.Wann ist abonnieren Methode von Angular Http Modul
Requests(data:Array<String>):Observable<any>{
return this.http.post(this.Url,data)
.map(
(res:Response) => {
if(res.status === 200 || res.status===201) {
return res.json()
}
}
)
.catch((error:any) => Observable.throw(error.json().error || 'Server error'));
}
Die Komponentendatei geht so.
Also basierend auf der Antwort von Service erhalten, werde ich die Flagge umdrehen.
Aber wenn ich meinen Code in Debugger-Tools ausführen, wird die Logik zum Umdrehen des Flags nie aufgerufen, auch wenn ein Wert in rResponse-Variable ist. Wenn die Funktion methodenname aufgerufen wird, versucht der Codefluss den Wert von rResponse unter der ersten if-Schleife zu prüfen und ruft dann am Ende die subscribe-Methode auf.
Wenn Sie bitte vorschlagen, den Fluss, in dem Subscribe-Methode funktioniert. Warum wird die if-Bedingung aufgerufen, bevor die eigentliche subscribe-Methode aufgerufen wird?
Dies ist kein Duplikat, weil ich verstehen will, warum der Fluss nicht zu meiner if-Schleife geht. Es gibt nichts undefiniertes. Ich bekomme Werte aus dem Service
Mögliche Duplikat [beobachtbare undefiniert] zuweisen (https://stackoverflow.com/questions/41945817/observable -undefined) – jonrsharpe
Die Subscribe-Methode wird sofort aufgerufen. Der * Callback, den Sie an ihn übergeben, ist das nicht, das ist der springende Punkt bei der asynchronen Bearbeitung von Anfragen. – jonrsharpe