Angular2: qual é a melhor maneira de fazer várias chamadas de sincronização com o Observables?
Estou estudando os Observáveis em Angular2 / 4, antes de usar as Promessas para minha ligação de serviços.
Gostaria de saber qual é a melhor maneira de fazer várias chamadas de sincronização. Deixe-me explicar com um exemplo: meu componente de aplicativo possui um método getUserInfo () que precisa fazer 3 chamadas para 3 serviços diferentes que dependem um do outro.
getUserId():Number // return the logged in user userId from the session
getUserPermissions(userId):Array<String> // return a list of permission from the userId
getUserInfo(userId):String // return some additional info for the user
Agora vamos supor que eu tenha um objeto Usuário como o seguinte:
export class User {
id: number;
name: string;
info: string;
permissions: array<string>;
}
Preciso criar uma nova instância da classe User com os resultados da chamada de 3 serviços, portanto, preciso executar:
getUserId ();getUserPermissions ();getUserInfo ();Qual é a melhor e mais educada maneira de conseguir isso através do Observable?
Com promessas, eu teria algo parecido com isto:
this._service.getUserId().then(r1 => {
let userId: number = r1;
this._service.getUserPermissions(userId).then(r2 => {
let userPermissions: Array<String> = r2;
this._service.getUserInfo(userId).then(r3 => {
let userInfo: string = r3;
let user: User = new User(userId, userInfo, userPermissions);
});
})
});