Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   JQuerry Deferred (https://javascript.ru/forum/dom-window/66963-jquerry-deferred.html)

alexandr2006 20.01.2017 12:12

JQuerry Deferred
 
Имеется 3 блока по горизонтали, в которые надо запихать блоки с новостями. Новостные блоки разной высоты, подгружаются ajax, число подгружаемых блоков ограничено (т.е. нельзя за один проход подгрузить новости на всю страницу)


Код:

function load_elem(items){
if (app.calcul) return;

app.calcul = true;

var promise = $.when();
$.each(items, function(index, item){
    promise = promise.then(function(){
        return $.getJSON(item.url);
    }).then(function(data){

        $('#'+item.id).append(Mustache.render($('#'+item.template).html(),view));
        //*****
    });
});
promise.then(function(){
    console.log('OK');
    app.calcul = false;
});
}

Исходные данные
Код:

    var items_collection = [{
        "id" : "mini-article",
        "template" : "mini-article-template",
        "url" : "bla-bla",
        "autocomplete": false // - значит новости не нужно подгружать до конца страницы
    },
    {
        "id" : "popular-lists",
        "template" : "popular-lists-template",
        "url" : "bla-bla",
        "autocomplete": true 
    },
    {
        "id" : "pic-day-lists",
        "template" : "pic-day-lists-template",
        "url" : "bla-bla",
        "autocomplete": true 
    }];

Запуск:
Код:

    load_elem([items_collection[0], items_collection[1], items_collection[2]]);

И вот я не пойму как сделать, чтобы там, где //***** - в случае если есть свободное место под новости и utocomplete=true, запускался бы этот же запрос и пока он не выполнился - никакие другие новости не подгружались бы, а потом наступал черед items_collection[1] и по аналогии..


Часовой пояс GMT +3, время: 07:24.