$.ajax({ url: vars.url, type: "post", data: r, async: true, processData: vars.process, contentType: vars.contenttype, beforeSend: function(){ if(vars.loadbar == 'true'){ setInterval(function () { $.getJSON(domain + '/core/files/results.json', function (data) { console.log(data); }) }, 1000); } }, complete: function(){ clearInterval(); }, succes: function(data){ .................. } })Así que estoy tratando de terminar el ciclo infinito que genera mi código tan pronto como se realiza mi llamada ajax. Ahora llama casi cada segundo a mi archivo para obtener resultados, que quiero detener tan pronto como se complete mi llamada ajax.
No estoy seguro de cómo abordar esto, ya que si asigno una variable a setInterval (ya sea en la función del beforeSend en sí, o fuera de la llamada AJAX), no verá la variable o mi variable está vacía. Creo que me estoy acercando a esto mal. ¿Puedo verificar dentro de beforeSend si la llamada AJAX está completa para finalizar el ciclo?
puede almacenar su intervalo como una variable global y borrarlo cuando lo necesite. al igual que:
let interval; $.ajax({ url: vars.url, type: "post", data: r, async: true, processData: vars.process, contentType: vars.contenttype, beforeSend: function(){ if(vars.loadbar == 'true'){ interval = setInterval(function () { $.getJSON(domain + '/core/files/results.json', function (data) { console.log(data); }) }, 1000); } }, complete: function(){ clearInterval(interval); }, succes: function(data){ .................. } }