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

chamada Get/Post Synchronize

Queria saber como posso fazer uma chamada ( get/post ) e sincronizar o processamento para seguir apenas apos o retorno do servidor.

Penso nessa situação para duas condições , preciso aguardar uma informação de configuração do servidor para poder seguir ( como se fosse uma chave ) e não receber erro e a outra é liberar a tela somente se deu certo o post para evitar a concorrência - apenas a primeira pessoa pode alterar o registro ( algo com uma fila onde vários atendentes atuam nos chamados.

Em angularJS tinhamos o .then , que aguardava o retorno do processamento.

  • Chamada sincrona
3 respostas

Boa noite, Giovanna! Como vai?

Logo no vídeo seguinte a esse que vc marcou no seu tópico o mestre Flávio mostra como fazer isso que vc falou usando o método subscribe() do RxJS.

Segue o link da aula: https://cursos.alura.com.br/course/angular2-parte1/task/21368

Qualquer coisa é só falar!

Grande abraço e bons estudos!

Na verdade segue o código para ficar mais claro .... Tenho meu componente (HTML) que precisa ter o retorno do serviço (dashborad) para terminar de ser "inicializado".

No código abaixo está a chamada do serviço no init.

  ngOnInit() {
    console.log(1);
    this.dashboardService.getPredicative().then(data =>{
      console.log(2);
      this.avisos =  this.dashboardService.avisos;
      console.log(3);
    });
    console.log(4);
  }

No console o que vamos ver é 1 , 4 , 2 , 3 .

quando na verdade eu preciso que seja "esperado" o retorno do evento para seguir adiante sem erros na "construção" do componente : 1 , 2, 3, 4.

código da chamada do serviço.

  getPredicative() {
    let promise = new Promise((resolve, reject) => {
      let apiURL = this.urlServiceDashBoard;
      this.http.get(apiURL)
        .toPromise()
        .then(
          res => { // Success
            this.avisos = res.json();
            resolve();
          }
        );
    });
    return promise;
  }

A necessidade é que eu preciso dos dados retornados para "montar" a página e ter todos os parâmetros configurados.

Obrigada,

solução!

Boa tarde, Giovanna! Como vai?

Entendi a situação! O correto nesse caso é vc fazer toda e qualquer configuração dentro do then()! Algo assim:

ngOnInit() {
     this.dashboardService.getPredicative().then(data =>{
          // coloque aqui toda e qualquer configuração
          // necessária para o seu componente 
          // funcionar corretamente!
     });
}

Pegou a ideia? Qualquer coisa é só falar!

DICA 1: Sempre que estiver trabalhando com Angular 2+ a boa prática é utilizar o Observable do RxJS para tratar processos assíncronos e não Promise!

DICA 2: Antes de iniciar o processo de requisição ao serviço dashboardService o ideal é que vc abra um popup na tela do sistema exibindo um loading para o usuário ter uma informação visual de que os dados estão sendo carregados. E ao fim da requisição o mesmo popup seja fechado.

Grande abraço e bons estudos!