Angular 2 gibt Daten von RxJs zurück subscribe

Ich habe einen Dienst mit einer Authentifizierungsfunktion -

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 Authentifizierungsfunktion aufrufeconsole.log(authenticate('a', 'b'));, es protokolliertundefined seit derretie Variable @ wird zurückgegeben, bevor die Funktion subscribe die Daten darin ablegen kann. Wie kann ich die http-Antwortdaten von der Authentifizierungsfunktion zurückgeben? Ich habe noch nie zuvor eine reaktive Programmierung mit RxJS durchgeführt, und genau das scheint Angle 2 zu verwenden.

PS. Gibt es eine anständige CSP-Lösung für Javascript wie go channels oder core.async?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage