我需要使用有限的流進行順序異步ajax請求。截至目前,我只能在Web服務器上佔用一個流,因此我只能在一次做一個Ajax請求。如何使用給定數量的流執行順序異步ajax請求
我有以下功能,可以幫助我,當我被允許一次只能使用一個流。
function initiateChain() {
var i = 0;
var tasks = arguments;
var callback = function() {
i += 1;
if (i != tasks.length) {
tasks[i](callback); //block should call callback when done otherwise loop stops
}
}
if (tasks.length != 0) {
tasks[0](callback); //initiate first one
}
}
說,如果我有三個AJAX輔助功能
function getGadgets(callback) {
//ajax call
callback(); // I call this in complete callback of $.ajax
}
function getBooks(callback) {
//ajax call
callback(); // I call this in complete callback of $.ajax
}
function getDeals(callback) {
//ajax call
callback(); // I call this in complete callback of $.ajax
}
以下調用確保不超過1個AJAX請求從該客戶端進行
initiateChain(getGadgets, getBooks, getDeals);
現在我需要加強initiateChain以支持任意數量的流。假設我被允許使用2或n個流,我想知道如何在不改變Ajax幫助函數getGadgets,getDeals,getDeals的情況下這樣做。
總之,我有一組函數N,在這種情況下getGadgets,getDeals和getDeals(| N | = 3),每個函數都需要連接到Web服務器。目前,我一次只能執行一個請求,所以啓動鏈接函數按順序調用這三個方法。如果我有權訪問M個連接,我想執行| N |並行運行(最高可達M)。
你的問題到底是什麼? – jfriend00 2013-02-11 05:13:11
正如我提到的 我有一組函數N,在這種情況下getGadgets,getDeals和getDeals(| N | = 3),每個函數都需要連接到Web服務器。目前,我一次只能執行一個請求,所以啓動鏈接函數按順序調用這三個方法。如果我有權訪問M個連接,我想執行| N |並行運行(最高可達M)。 – harsha 2013-02-11 07:57:47