У меня есть набор вызовов Ajax. И эти вызовы нужно называть группой. Например: Мне нужно вызвать вызовы Ajax следующим образом.
var ajaxCallListGroupBy = [["AjxStep_11", "AjxStep_12", "AjxStep_13"],["AjxStep_21", "AjxStep_22", "AjxStep_23"]];
Когда первый индекс массива Ajax-вызовов завершен, нам нужно вызвать второй индекс массивов Ajax-вызовов.
Итак, я использовал ниже machanism для вызова ajax-вызовов. Но страница повесилась.
function callGroupByAjaxCalls(newIndex){
orderOneAjaxCount = 0;
var listOfQueries = ajaxCallListGroupBy[newIndex];
groupCalls = listOfQueries.length;
for (var currIndex=0,len=listOfQueries.length; currIndex<len; currIndex++){
window[listOfQueries[currIndex]]();
}
if(ajaxCallListGroupBy.length>1){//To check how many times we have to iterate
if(newIndex < (ajaxCallListGroupBy.length-1) && (orderOneAjaxCount >= ajaxCallListGroupBy[newIndex].length)){
callGroupByAjaxCalls(newIndex+1);
}else{
console.log("After 3 secs orderOneAjaxCount "+orderOneAjaxCount);
setTimeout(plsWait(newIndex),1000);
if(plsWait(newIndex)){
callGroupByAjaxCalls(index+1);
}
}
}else if(ajaxCallListGroupBy.length <= newIndex){//To check index already reached to actual calls
console.log("no need of further calls. Alreay all ajax calls hit from APP");
}else if(ajaxCallListGroupBy.length == newIndex){ //If there is only one set of ajax calls there
console.log("only one set of ajax calls. So no need to call any other ajax call");
}else{
console.log("handle new use case");
}
}
function plsWait(index){
var flg = true;
console.log("orderOneAjaxCount = "+orderOneAjaxCount+" ajaxCallListGroupBy[index].length ="+ajaxCallListGroupBy[index].length);
if(!(orderOneAjaxCount >= ajaxCallListGroupBy[index].length)){
for(l=0;l<20000;l++){
}
if(!(orderOneAjaxCount >= ajaxCallListGroupBy[index].length)){
plsWait(index);
}
}
return flg;
}
Примечание: orderOneAjaxCount
будет увеличиваться при каждом вызове ajax.
Если вы используете YUI, я рекомендую вам взглянуть на Y.io.queue
. Это должно помочь вам правильно настроить эти запросы. См.: http://yuilibrary.com/yui/docs/io/#queue