2011-08-16 15 views
7

Nawiązuję interakcję z interfejsem API, który umożliwia jedno działanie na 5 sekund. Jednak chcę, aby wszystkie żądania dotarły do ​​hosta. W jaki sposób można kolejkować i blokować żądania, które są wykonywane w stosunku do interfejsu API za pomocą metody .ajax()?Ograniczanie jQuery i kolejkowanie żądań AJAX

Bardzo zobowiązany!

Odpowiedz

9

Można zrobić coś wzdłuż tych linii

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

Jeśli chcesz zapewnić nic wtedy Lepiej dostać medium inne niż w internecie - jest z natury zawodne. W każdym razie, aby uzyskać spróbuj, aby to zapewnić, możesz użyć metody Javascript setTimeout, aby zainicjować połączenie w późniejszym czasie.

Poza tym, jeśli nie chcesz korzystać z żadnych zasobów stron trzecich, możesz przyjrzeć się metodzie delay ujawnionej przez jQuery.

+3

To jest bezpodstawna opinia. Wiarygodna transmisja danych przez Internet jest przyziemna. – Konrads

3

jQuery posiada interfejs .delay() i Proponuję kasy i czytać.

+0

delay() i queue() dotyczą tylko animacji korzystających z kolejki efektów. Nie będą one pomocne w opóźnianiu AJAX. – thenickdude

+1

@ Lamah Nie jest prawdą, '.delay()' i '.queue()' mogą być używane dla twoich własnych kolejek (lub domyślnej kolejki 'fx', która jest używana do animacji). Dowolna funkcja ogólna może zostać dodana do arbitralnie nazwanej kolejki. – Chad

+0

Masz całkowitą rację, wyraźnie muszę nauczyć się dokładniej czytać dokumentację! – thenickdude

Powiązane problemy