2011-08-16 15 views
7

Estoy interactuando con una API que permite una acción cada 5 segundos. Sin embargo, quiero asegurarme de que todas las solicitudes terminen en el host. ¿Cómo puedo poner en cola y acelerar las solicitudes que se hacen contra una API usando .ajax()?jQuery aceleración y puesta en cola de solicitudes AJAX

Much obliged!

Respuesta

9

que podría hacer algo en este sentido

var requests = []; 

setInterval(function() { 
    if(requests.length > 0) { 
     var request = requests.pop(); 
     if(typeof request === "function") { 
      request(); 
     } 
    } 
}, 5000); 

// then anywhere you need to make an ajax request 
requests.push(function() { 
    // ajax request here 
    $.ajax({ 
     url: "/foo", // some variable from outer scope 
     success: function(a,b,c) { 
      // handle it 
     } 
    }); 
}); 
-2

Si desea asegurarse de nada, entonces será mejor que obtener un medio otra de internet - es inherentemente poco fiables. De todos modos, con el fin de intente para asegurarse, puede usar el método Javascript setTimeout para iniciar la llamada en otro momento.

Aparte de eso, si no desea utilizar ningún otro recurso de terceros, puede consultar el método delay expuesto por jQuery.

+3

Esta es una opinión sin fundamento. La transmisión confiable de datos a través de Internet es mundana. – Konrads

3

jQuery tiene una interfaz .delay() y Sugiero usted comprobación y leído.

+0

delay() y queue() solo se aplican a las animaciones, que usan la cola de efectos. No serán útiles para retrasar AJAX. – thenickdude

+1

@Lamah No es verdadero, '.delay()' y '.queue()' se pueden usar para sus propias colas (o la cola 'fx' predeterminada, que se usa para animaciones). Cualquier función genérica se puede agregar a una cola nombrada arbitrariamente. – Chad

+0

Tiene toda la razón, ¡claramente necesito aprender a leer la documentación más de cerca! – thenickdude

Cuestiones relacionadas