2011-08-16 51 views
7

我正在與每5秒允許一個動作的API進行交互。但是,我想確保所有請求都與主機結束。如何通過使用.ajax()來排隊和限制針對API所做的請求?jQuery限制和排隊的AJAX請求

非常感謝!

回答

9

你可以做一些沿着這些線路

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

如果你想確保什麼,然後你最好得到一箇中等其他比互聯網 - 它本質上是不可靠的。無論如何,爲了嘗試以確保,您可以使用Javascript setTimeout方法稍後發起呼叫。

除此之外,如果您不想使用任何其他第三方資源,您可以查看jQuery公開的delay方法。

+3

這是一個沒有根據的意見。互聯網上可靠的數據傳輸是平凡的。 – Konrads

3

jQuery有一個.delay()和界面,我建議你結帳和了解。

+0

delay()和queue()僅適用於使用效果隊列的動畫。他們不會有助於延遲AJAX。 – thenickdude

+1

@Lamah不是這樣,'.delay()'和'.queue()'可以用於你自己的隊列(或者用於動畫的默認'fx'隊列)。任何通用函數都可以添加到任意指定的隊列中。 – Chad

+0

你說得很對,顯然我需要學習如何更仔細地閱讀文檔! – thenickdude