我需要使用有限的流进行顺序异步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