¿Cómo puedo usar for loop con tiempo de espera para solicitar ajax cada 5 segundos?
function req() { $.ajax({ ....... }) } for (var i = 4000; i <= 6000; i++) { setTimeout(function() { req(i) }, i * 5000); }No hagas loops con Ajax. Si el servidor está sobrecargado, acumulará solicitudes que se cancelarán entre sí
en lugar de hacer
function req() { $.ajax({ ....... success: function() { setTimeout(req,5000) } }) }Si desea enviar con 3 intervalos diferentes, puede hacer esto
const timeouts = [4000,5000,6000]; let cnt = 0; function req() { $.ajax({ ....... success: function() { setTimeout(req,timouets[cnt]); // move this to an if to stop after 3 calls cnt++; if (cnt>= timeouts.length) { cnt = 0; } } }) }Puede enviar la solicitud después de cada 5s usando
time + time * (i - start) function req(s) { console.log("After " + s + "s"); // $.ajax({.......}) } const start = 4000, end = 6000, time = 5000; for (let i = start; i <= end; i++) { setTimeout(function () { req((time + time * (i - start)) / 1000); // I've passed the time to track the passed seconds }, time + time * (i - start)); }Puede tomarlo como la creación de una serie de solicitudes de lapso de tiempo a través de bucle for.
function req() { console.log('requested'); } for (let i = 1; i <= 10; i++) { setTimeout(req, i * 5000) } Sin embargo, esta serie de solicitudes también se puede lograr fácilmente con setInterval .
function req(){ console.log('requested'); } const limit = 10; let counter = 1; let handler = setInterval(function(){ req(); counter++; if (counter >= limit) clearInterval(handler); }, 5000)