Estoy tratando de retrasar mis datos ajax para que el ciclo se vuelva un poco más lento. y aquí está mi código

$(document).ready(function (){
$('#button').click(function(){

 $('#hide').show();
 var data = $('#textarea').val();

 var arrayOfLines = data.split("\n"); 

 var track = JSON.stringify(arrayOfLines);
 var item = "";

 var lines = $('#textarea').val().split('\n');

Aquí está el bucle

 for (var i = 0; i < lines.length; i++) {
     item = lines[i];
            $.ajax({
            type: 'GET',
                url: 'cookie.php',
                dataType: 'html',
                data: 'data=' + item+'&cookie='+track,
                success: function(msg){
                    $('#results').append(msg);

                }

                });
 }

});
-4
Mahmoud Khatib 30 oct. 2017 a las 11:18

3 respuestas

La mejor respuesta

Usando la recursividad, puede poner una función sendToServer y pasar a través de la matriz lines, comenzando el índice 0. La función se ejecutará de 0 a líneas. Longitud. De esta manera no DDOS su servidor :)

Si realmente necesita algún tipo de retraso arbitrario, puede incluir un tiempo de espera en la llamada a la función sendToServer; en el ejemplo, se establece en 5 segundos.

 var sendToServer = function(lines, index){
   item = lines[index];
   if (item.trim().length != 0){
     $.ajax({
       type: 'GET',
       url: 'cookie.php',
       dataType: 'html',
       data: 'data=' + item+'&cookie='+track,
       success: function(msg){
         $('#results').append(msg);
         if (index < lines.length) {
           setTimeout(
             function () { sendToServer(lines, index+1); }, // function to call
             5000 // delay in ms
           );
         }
       }
     });
   }
   else { sendToServer(lines, index+1); }
};

sendToServer(lines, 0);
1
ChickenFeet 30 oct. 2017 a las 08:51

No envíe solicitudes al servidor para bucle. Puede derribar el servidor. En lugar de lo que hiciste, puedes hacer esto:

for (var i = 0; i < lines.length; i++) {
     item = lines[i];
}  

$.ajax({
    type: 'GET',
        url: 'cookie.php',
        dataType: 'html',
        data: 'data=' + item+'&cookie='+track,
        success: function(msg){
            $('#results').append(msg);

        }

     });
0
Chris 30 oct. 2017 a las 09:00

Use así:

 var timeDelay = 5000;       
    setTimeout(Function, timeDelay);
0
Gholamreza Eghbali 30 oct. 2017 a las 08:26