Angular 2 retornam dados de RxJs
Eu tenho um serviço com uma função de autenticação -
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;
}
Então, se eu chamar a função de autenticaçãoconsole.log(authenticate('a', 'b'));
, registraundefined
desde oret
A variável é retornada antes que a função de inscrição possa colocar os dados nela. Como posso retornar os dados de resposta http da função de autenticação? Eu nunca fiz nenhuma programação reativa com o RxJS antes e é isso que o angular 2 parece estar usando.
PS. Existe alguma solução CSP decente para javascript como go channels ou core.async?