Utilizando jQuery.ajax() para acionar sevlet

Pessoal, tenho utilizado a função jQuery.ajax() para acionar um servlet, funciona muito bem.

Agora surgiu a necessidade de utilizar o each() (fazer um laço de repetição) e ir chamando o ajax(), porém como a execução do servlet é um pouco lenta eu preciso do seguinte, no primeiro step do each() ao chamar o ajax() aguardar até a sua execução, para só então prosseguir para o próximo step e assim fazer a próxima chamada do ajax().

Porém como o ajax() é assíncrono o each() vai correndo e fazendo as chamadas que se sobrepõe.

Tentei aplicar fila de execução utilizando euque() e deuque(), porém não funcionou a contento.

Alguém tem alguma ideia?

Ola,

Tem jeito sim, vc tem que usar deferreds. Da uma olhada aqui:

http://rmurphey.com/blog/2010/12/25/deferreds-coming-to-jquery/

O exemplo do stackoverflow eh mais ou menos o que vc esta querendo fazer. Voce vai ter que adaptar para passar para a proxima interacao do loop quando o deferred for “resolvido”.

[quote=windsofhell]Ola,

Tem jeito sim, vc tem que usar deferreds. Da uma olhada aqui:

http://rmurphey.com/blog/2010/12/25/deferreds-coming-to-jquery/

O exemplo do stackoverflow eh mais ou menos o que vc esta querendo fazer. Voce vai ter que adaptar para passar para a proxima interacao do loop quando o deferred for “resolvido”.[/quote]

Cara vlw pela ajuda, descobri que posso utilizar .defered() o que me forçaria a reescrever quase todo o código, utilizar o ajax de forma síncrona (http://www.viamais.net/blog/executando-ajax-via-jquery-de-modo-enfileirado/) o que não é legal pois trava o browser ou a melhor solução pra mim foi utilizar ajax assíncrono de forma recursiva (http://www.viamais.net/blog/executando-ajax-via-jquery-de-modo-enfileirado-parte-ii/).

De qualquer forma foi resolvido com a terceira opção!