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

Parar até receber a resposta

Oi,

Tenho uma aplicação que tem metodos em rest que comunicam com um factory e esse factory é invocado num controller, e eu quero que a aplicação espere pela resposta do metodo.

RegistosMeiosFactory.getRegistosBetweenDates(dataInicial.value, dataFinal.value).then(function(resposta){
      tabelaMeios= defer.promise.value;
    });

A variavel tabelaMeios é global e serve para preencher uma tabela, o problema é que a resposta está a demorar muito tempo e só após clicar no botao procura (que é o que origina a chamada desse metodo) pela segunda vez é que consigo verificar os dados.

Alguém me consegue ajudar, de modo a que o pedido seja sincrono?

Cmpts

4 respostas
solução!

Oi Sérgio, você quer que a aplicação espere a busca assíncrona terminar, ou seja, você quer travar a aplicação inteira, é isso?

Bom, isso não é muito interessante em um ambiente single thread como JavaScript, mas tem uma galera que gosta de chamar um formulário modal com o texto Aguarde... que só some depois que a operação é realizada. Sendo assim, o usuário ficará vendo aguarde até que a operação termine sem poder fazer outra coisa na aplicação.

Há plugins para Angular 1 que cria esse modal para você, porque se você não dominar bem CSS criar um modal que funcione pode ser uma dor de cabeça. Fiz uma pesquisa no Google e achei várias.

No entanto, vale salientar que se a sua API REST esta demorando muito para executar a operação, o a estratégia do modal pode obscurecer algum problema no seu backend que precisa ser revisto, como otimizações ou refactor do código. Em teoria, sua API não deveria demorar mais de 300 milissegundos.

Espero ter ajudado com as dicas.

Muito obrigado.

Tem como debugar meu angular e fazer testes de performance?

Existe plugin para o Chrome chamado Batarang.

https://chrome.google.com/webstore/detail/angularjs-batarang/ighdmehidhipcmcojjgiloacoafjmpfk

Muito Obrigado.

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