aquí está mi código
for (i = 0; i < 100; i++) { $.ajax({ url: "APIurl", type : "POST", data : "a=addsgstkw", success: function (data) { alert(data); } }); }Mi problema es que el ajax en el bucle no se ejecuta hasta el final. Se detiene después de algunas carreras. Por ejemplo, después de 10 veces. ¿Cómo ejecuto el ajax en el ciclo?
Existen límites específicos del navegador para la cantidad de solicitudes de red paralelas que puede tener que se conectan al mismo dominio. Esto es cierto para la mayoría de los navegadores modernos, si no para todos.
Si desea que estas solicitudes ocurran en paralelo, considere crear una cola de solicitudes que deben ejecutarse. Luego ejecute hasta un cierto número de estas solicitudes ajax simultáneamente. Cada vez que una de estas solicitudes ajax termine de ejecutarse, haga que elimine la siguiente de la cola y ejecútela.
Algo como lo siguiente puede funcionar:
let request_queue = []; for(let i = 0; i < 100; i++) { request_queue.push({ url: 'APIUrl', type: 'POST', data: 'a=addsgstkw', success: function(data) { alert(data); }, complete: function() { // After this request finishes, whether it succeeds or fails, take the next request and execute it. let next_request = request_queue.pop(); if(next_request) { $.ajax(next_request); } } }); } // Starts two parallel network requests. $.ajax(request_queue.pop()); $.ajax(request_queue.pop());Esto será más lento que ejecutar potencialmente todas las solicitudes en paralelo (si su red puede manejar el ancho de banda), pero desafortunadamente no hay una forma de solucionar ese problema. Será necesaria alguna solución como la anterior para limitar la velocidad a la que realiza estas solicitudes.