CHAMADA AJAX ASSNCRONOMA

 Tópico anterior Próximo tópico Novo tópico

CHAMADA AJAX ASSNCRONOMA

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#487245 - 19/02/2019 11:01:18

MRSILVA
MARINGA
Cadast. em:Julho/2015


Ol.
Algum pode me ajudar de como fazer uma chamada Ajax assncronoma  esperar o resultado da chamada para  dar continuidade na execuo do cdigo.
Vou explicar melhor:

Tenho uma classe JavaScript que tem uma chamada Ajax que me retorna um array de objetos,  tenho outra classe JavaScript que chama essa esse mtodo, mas no estou conseguindo implementar Callback

Mtodo da primeira classe:

this.GetProdutoGrupo = async function (tipo, indexIni, indexFim, callback) {

        var callbackFunction;
            $.ajax({
                type: []GET[],
                url: []api/ProdutoGrupo/GetProdutoGrupoPaginador[],
                data: { IdTipo: tipo, indexIni: indexIni, indexFim: indexFim },
                dataType: []json[],
                success: function (data) {
                    callbackFunction = callback(data);
                    return callbackFunction;
                                      
                },
                error: function (request, status, error) {
                    err(request.responseText);
                },
                failure: function (request, status, error) {
                    err(request.responseText);
                },

            });  

        return callbackFunction;
    }  


Parte do cdigo que chama a chamada Ajax:
    

$([].page-item[]).click(function () {

                var indexIni = 1;
                var indexFim =  300;
                var tipo = 1;
                var retorno;
                produtoGrupo.GetProdutoGrupo(tipo, indexIni, indexFim, RetornoProdutoGrupo(retorno));
              

            }

        }
      
    });
  


Mtodo que devia fazer o tratamento do retorno

  async function RetornoProdutoGrupo(retorno){

      
        produtoGrupo.ListObjetos = retorno;
      
    // O cdigo continua aqui

    }


J fiz varias pesquisas na internet ms no consigo fazer o cdigo esperar o retorno algum pode me ajudar implementar isso.
Desde j agradeo.




Resposta escolhida #487246 - 19/02/2019 11:21:21

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
No basta colocar o calback assncrono, a chamada AJAX tambm tem que estar:

        var callbackFunction;
            $.ajax({
                type: []GET[],
                async: true,
                url: []api/ProdutoGrupo/GetProdutoGrupoPaginador[],
                data: { IdTipo: tipo, indexIni: indexIni, indexFim: indexFim },
                dataType: []json[],
                success: function (data) {
                    callbackFunction = callback(data);
                    return callbackFunction;
                                      
                },
                error: function (request, status, error) {
                    err(request.responseText);
                },
                failure: function (request, status, error) {
                    err(request.responseText);
                },

            });  


Isso deve resolver.
Mas honestamente, se voc est nesse ponto, melhor partir para uma soluo mais robusta como Angular ou React ou at mesmo Knockout

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#487247 - 19/02/2019 11:57:07

MRSILVA
MARINGA
Cadast. em:Julho/2015


Obrigado Kerplunk.

Fiz como mencionou ms  mtodo abaixo no espera o retorno da chamada Ajax, preciso do retorno para dar continuidade no processamento do cdigo:

async function RetornoProdutoGrupo(retorno){
      
        produtoGrupo.ListObjetos = retorno;
      
    // O cdigo continua aqui

    }  


Pode me ajudar nisso mais uma vez, estou desde ontem tentando sem sucesso e preciso muito dar continuidade no meu projeto.

Desde j agradeo.

Citação:
Mas honestamente, se voc est nesse ponto, melhor partir para uma soluo mais robusta como Angular ou React ou at mesmo Knockout  


At queria estudar essas tecnologias ms nos ltimos tempos pulei do desckTop  para Web estou apreendendo WebApi, javaScript, JQuery, Bootstrap e padro MVC  tudo de uma s vez no momento se focar em mais alguma coisa meu projeto vai parar de vez.





#487250 - 19/02/2019 13:07:16

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Se voc quer que espere pelo processamento ento assncrono o exato oposto do que voc quer.

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#487252 - 19/02/2019 13:33:02

MRSILVA
MARINGA
Cadast. em:Julho/2015


Sim kerplunk sei disso inclusive se fosse para fazer sncrona  no estaria com dificuldade er s colocar o parmetro  async  da chamada Ajax como false o mtodo j estaria praticamente pronto.

Quero fazer assncrono para  evitar o travamento da tela do usurio caso o servidor no responda ou demore muito para responder uma requisio.

o problema que no se implementar a forma de esperar o retorno, j tentei alguns exemplos mas meu cdigo no funciona (no espera).

Nas requisies em feitas em C# muito fcil esperar o retorno utilizando async em conjunto com await  mas em JavaScript ainda no consegui fazer funcionar.

Desde j agradeo quem puder me apontar o caminho.








#487253 - 19/02/2019 13:39:01

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
O que voc quer:
Que no parea []travado[] enquanto a requisio no chega, certo? Se for isso, no usando assincronicidade que se resolve. Assncrono, significa que tudo roda normal depois da chamada, ou seja, voc chama algo assncrono e o cdigo segue normal. Sncrono exatamente o oposto, tudo para na sua chamada, nada segue. Mas o que voc quer uma chamada sncrona que no fique []travada[] ou entendi errado?

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#487257 - 19/02/2019 14:25:12

MRSILVA
MARINGA
Cadast. em:Julho/2015


Isso mesmo Kerplunk!



#487258 - 19/02/2019 14:54:47

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Ento o que voc quer no tem nada a haver com sncrono ou assncrono, voc quer simplesmente um spinner enquanto a requisio ocorre. Isso bem simples e tem um monte de exemplos prontinhos. Procure por []Ajax loading spinner[]. Tem vrios grficos bem legais de spinner aqui

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#487261 - 19/02/2019 15:31:11

MRSILVA
MARINGA
Cadast. em:Julho/2015


Kerplunk.

Achei que a recomendao era sempre utilizar as requisies  assncrono.

Vou implementar o cdigo depois posto se deu o resultado esperado.

Mais uma vez obrigado pela sua disposio em ajudar.



#487263 - 19/02/2019 17:00:01

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Vai ser assncrono se for a melhor escolha, vai ser sncrono ser for a melhor escolha. A PREFERNCIA para uso de assincronicidade, mas sua necessidade(de no executar mais nada at ter o retorno) requer que a chamada seja sncrona. Se no existe a possibilidade de ser assncrono, talvez a estruturao do que est fazendo no seja a melhor possvel.

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por MRSILVA em 22/07/2019 09:01:28