Ich habe einen Dienst mit einer beglaubigen Funktion -Angular 2 Rückgabedaten aus RxJs abonnieren
authenticate(username: string, password: string) {
let ret;
let packet = JSON.stringify({
username: username,
password: password
});
let headers = new Headers();
headers.append('Content-Type', 'application/json');
this.http.post('http://localhost:5000/api/authenticate/', packet, {
headers: headers
})
.map(res => res.json())
.subscribe(
data => {
// put return data into ret
ret = data.token;
},
err => console.log(err),
() => {
// this works!
console.log(ret);
}
);
// get's returned before I put data into it
return ret;
}
Also, wenn ich die authenticate Funktion console.log(authenticate('a', 'b'));
nennen, es meldet sich undefined
da die ret
Variable vor der Zeichnung Funktion zurückgegeben wird, kann lege die Daten hinein. Wie kann ich die HTTP-Antwortdaten von der Authentifizierungsfunktion zurückgeben? Ich habe noch nie eine reaktive Programmierung mit RxJS gemacht und das ist es, was angular 2 zu benutzen scheint.
PS. Gibt es eine anständige CSP-Lösung für Javascript wie go Kanäle oder core.async?
Das ist nicht wirklich, wie async oder RxJs funktioniert; Sie geben keine Daten von asynchronen Funktionen zurück. –
so viel ich dachte, da abonnieren wird ausgeführt, nachdem ich die Ret-Variable zurückgeben. irgendwelche Ideen, wie ich Daten zurückgeben kann, wenn ich mit RxJS handle? – Lordking
Sie könnten eine andere Methode erstellen, sagen this.authenticateFinished (ret) {console.log (ret); // und alles andere} und rufe dann dieses aus data => {} – philoniare