Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Utilizar await no angular.

Boa noite, Professor!

Gostaria de saber se é possível utilizar o await em um observable. Costumo utilizar o angular 2+ e consumo uma api. Se eu quiser, por exemplo, realizar outra função somente quando for retornado algo da api eu devo utilizar o await ou teria alguma outra forma. Obrigado!!!

3 respostas
solução!

Bom dia!

Bom, não parece ser uma pergunta de TypeScript, mas sim de Angular, certo? Quando for assim, postar no fórum correto aumentam as chances de você ser respondido, mas como eu encontrei sua pergunta, vamos lá.

Não é possível usar await com Observables, eles não são estruturas da linguagem JavaScript, mas criações de terceiros. Só se você converter um Observable para uma Promise, mas não é recomendado fazer isso porque Observables são mais poderosos.

Sobre sua necessidade de executar em sequencia códigos assíncronos, você já deu uma olhada nos novos cursos de Angular 6.0 da Alura?

https://www.alura.com.br/curso-online-angular-fundamentos

https://www.alura.com.br/curso-online-angular-autenticacao

(tem mais dois na fila de edição).

Digo isso porque você fez os de Angular 2 e não os mais novos. A maneira de lidar com observables mudou, então a resposta que lhe darei é utilizando Rxjs 5.5 ou superior.

Você consegue o que deseja o operador switchMap. Segue um exemplo de conceito. Buscamos os dados A e usamos o resultado para buscarmos os dados B:

import { switchMap } from 'rxjs/operators';

service1
    .getDadosA()
    .pipe(switchMap(dadoA => {
        // usa o dadoA para buscar os dados B
        return service2.getDadosB(dadoA);
    }))
    // tem como retorno os dados de B
    .subscribe(dadosB => {
        console.log(dadosB)
    })

Sucesso e bom estudo meu aluno,

Obrigado!! Me ajudou bastante. Comecei agora os novos cursos de Angular. :) Por eu já ter uma experiência, acredito que será mais simples para absorver o que é passado.

Excelente. Então, durante os novos cursos eu mostro muito mais de Rxjs do que nos cursos de Angular antigos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software