Ajax вызывает зависание в случае реализации синхронного плюс асинхронного

0

У меня есть набор вызовов 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.

  • 0
    невозможно отформатировать. До примечания, каждая вещь - только код JavaScript
  • 0
    как вы думаете, в чем может быть проблема?
Показать ещё 3 комментария
Теги:
yui

1 ответ

0

Если вы используете YUI, я рекомендую вам взглянуть на Y.io.queue. Это должно помочь вам правильно настроить эти запросы. См.: http://yuilibrary.com/yui/docs/io/#queue

Ещё вопросы

Сообщество Overcoder
Наверх
Меню