Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Edson Hostins

Múltiplas requisições em ajax

Recommended Posts

Bom dia

 

Estou com a seguinte duvida...

 

Faço 3 requisições ajax ao mesmo tempo, para 3 arquivos diferentes... e isso cria uma "fila"

Caso a primeira requisição demore (upload de arquivo), as outras duas ficam "aguardando"

 

Assim que a primeira é concluída, as outras duas são executadas logo em seguida....

 

Não sei bem se é com ajax, talvez seja configuração de servidor....

 

abraços, e obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi qual é a dúvida.

Você queria requisições assíncronas porém não é assim que está?

Compartilhar este post


Link para o post
Compartilhar em outros sites

3 requisições ajax são feitas ao mesmo tempo

Na fila de requisições do navegador (network do chrome)

aparece assim

 

1 - upload de arquivo

2 - txt básico

3 - txt básico

 

Como a requisição 1 é grande, trafega mtos dados, ela demora um pouco para ser concluída... 5... 6 segundos varia....

 

Enquanto a 1 não é concluída, a 2 e a 3 ficam "aguardando", no chrome as 3 aparecem como pendentes

Assim que a 1 é concluída, a 2 e a 3 são imediatamente executadas e retornadas....

 

Gostaria que a 2 e a 3 não ficassem "aguardando" a 1

 

Fui claro ?

Qq coisa só perguntar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi. Como você está fazendo sua requisição (poste o código). AJAX: Asynchronous JavaScript and XML, sendo assim, por padrão, requisições AJAX seriam assíncronas e você não deveria estar tendo esse problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim...

 

Código ajax do upload

$.ajax({
type:"POST",
url:this.config.uploadUrl,
data:data,
cache: false,
contentType: false,
processData: false,
success:function(rponse){
}
});
Código das outras 2 requisições (sim são separados)
$.ajax({
url: 'pvt.php',
type: 'GET',
cache: false,
success: function(data){
$('#pvt .campo-texto').append(data);
},
timeout: 5000
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Edson, você não pode colocar as requisições aninhadas? assim quando cair no success faz uma validação do retorno e dispara outra requisição.

 

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas ai que está...
Não quero uma depois da outra....

Gostaria que tudo fosse ao mesmo tempo entendes?
Caso o primeiro demorei... e o segundo é rápido, já retorna o segundo

enquanto o primeiro ainda está pendente...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então é "só fazer normal", esse é o comportamento default do ajax (assíncrono)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então...

Essa situação... de "fila", e sequencia de execução é algo padrão do ajax?

 

Nada relacionado ao servidor que vai retornando as solicitações?

 

Existe contra medidas ?

 

Edson

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode-se usar também o $.when() que tem comportamento assíncrono, mas que te devolver as respostas somente quando todas estiverem concluídas.

var ajax1 = $.ajax({
	url: 'pagina_1.php',
	method: 'GET',
	data: {},
	cache: false
});

var ajax2 = $.ajax({
	url: 'pagina_2.php',
	method: 'POST',
	data: {},
	cache: false
});

$.when(ajax1, ajax2).done(function(data1, data2){
	console.log(data1);
	console.log(data2);
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Edson, conseguiu resolver seu problema? Estou com a mesma situação aqui.. sinceramente acho que o problema é no server pois quando por exemplo uma página demora a carregar.. quando tento abrir o site em outra aba não abre enquanto a primeira não terminar de carregar..

Esse seria o caso de utilizar Threads.. não faz muito sentido pois no caso da requisição ajax ela é assíncrona justamente pra isso não acontecer..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.