Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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
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.
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);
},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.
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...
Então é "só fazer normal", esse é o comportamento default do ajax (assíncrono)
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
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);
});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..
Nada ainda... to fazendo varias requisições, as vezes sinto um gargalo, sem sentido, pq tá sobrando servidor
Vou fazer uma troca de apache daqui um tempo, ver como fica
Não entendi qual é a dúvida.
Você queria requisições assíncronas porém não é assim que está?