Добрый вечер, уважаемые форумчане.
В ходе написания скрипта для определенной задачи я наткнулся на сложность. Нужна помощь.
Итак, работаю с jQuery.Deferred
Задача - несколько независимых очередей ajax-запросов с задержкой.
Подробнее:
- есть $.Deferred объект, реализующий очередь ajax запросов с определенными параметрами. По отдельности такие "цепочки" работают отлично.
- необходимо запустить выполнение нескольких таких deferred-объектов в цикле, но с задержкой. Т.е. первый запускается сразу, остальные через N-секунд.
- "проблема" в том, что выполнение всех запросов асинхронно и отсчет задержки нужно начинать после завершения работы первой очереди.
function test () {
var df = $.Deferred();
/* ... выполняется цепочка ajax-запросов, после завершения которых вызывается df.resolve();*/
return df.promise();
};
var obj = test();
//для примера
obj.done(function() {
//do something
});
А теперь нужно реализовать запуск этих объектов один за другим НО с определенной задержкой.
Количество "звеньев" этой цепочки зависит от кол-ва элементов массива Array. При каждом выполнении выбирается первый элемент последством Array.shift();
*ниже приведен НЕ работающий код, который собственно и нужно заменить рабочим
Что-то типа такого.
$.when(test()).done(function() {
var callback = this.done;
if(array.length > 0) {
setTimeout(function() {
$.when(test()).done(callback);
}, 5000);
} else {
//end
}
});
p.s. я слаб в JS, если что-то не так сильно не ругайте. Буду рад подсказкам и наставлениям на правильный путь.
Заранее всем спасибо