Ir para conteúdo

POWERED BY:

Arquivado

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

mruoppolo

Programar laço de repetição para esperar um tempo antes de executar

Recommended Posts

Olá galera, tudo bem??

 

Estou com um sistema que precisa fazer requisições ajax, ele esta fazendo tudo certinho, porém, ele executa o laço muito rápido e ai as requisições não tem tempo de serem completadas, ele precisa executar 8 requisições simultâneas e não estou sabendo como fazer isso, na hora que ele vai para a próxima página que é um carrinho de compras eu vejo que apenas 2 ou 3 produtos estão no carrinho, ou seja, apenas 2 ou 3 requisições tiveram tempo de serem executadas.

 

Ai no caso, estou tentando bolar um jeito de fazer com que o laço aguarde um certo tempo antes de executar a próxima requisição, o código é o seguinte:

           for (var produto in array_produtos){
		console.log('produto', produto);
		console.log('array_produtos[produto]', array_produtos[produto]);
			$.ajax({
			   "url": "../compras.php",
			   "method": "get",
			   "data": "action=add&product_id="+ array_produtos[produto],
               
            });       
		  }		

Alguém tem ideia de como fazer um timeout antes dele executar a requisição novamente???

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem acesso ao backend? Não seria mais fácil simplesmente passar todos os produtos na variavel e, no backend, fazer a adição?

Dessa forma, só seria feita uma requisição ajax.

O que você está querendo fazer são requisições síncronas (ou seja, o navegador para de responder enquanto a requisição não termina) e já deixa de ser Ajax (o primeiro A é de asynchronous). É possível, mas, do ponto de vista de UX não é recomendável, pois para o usuário vai parecer que o navegador travou.

Colocar um timeout não me parece uma boa solução, pois clientes diferentes tem conexões diferentes. Imagina um cara com uma conexão bem lenta. Mesmo com um timeout, pode acontecer de uma requisição sobrescrever a outra.

Agora, pense do outro lado, do cliente que tem uma conexão rápida. Esse timeout só vai confundi-lo, além de perder tempo desnecessariamente.

Se ainda quiser seguir pelo caminho de requisições síncronas, leia sobre na doc da api do jquery: http://api.jquery.com/jquery.ajax/ (procure por async)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valew Rafael, eu na verdade acabei fazendo de outra forma, eu criei uma função que executa a requisição e ela é chamada toda vez que rola um onchage em uma select, não ficou 100% mas uns 98% ficou.

 

Muito obrigado cara

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.