Ajax запрос после выполнения всех итераций цикла
Здравствуйте, помогите пожалуйста с реализацией.
var fileList = $('#file_list');
$("#upload").click(function() {
fileList.find('li').each(function() {
var item = this;
// Здесь File API, каждая картинка отправляется на сервер
// по отдельности, т.е каждая итерация это запрос
// пример функции которая возвращает ответ от сервера.
...
oncomplete: function(response) {
$(item).removeClass('update').addClass('read');
createPost();
}
)};
function createPost() {
if (!fileList.find('li').hasClass('update')) {
// Последний запрос к серверу он должен выполниться только один раз.
}
}
С первого взгляда все ок, но не ок, при большом кол-ве картинок происходит так что if (!fileList.find('li').hasClass('update')) срабатывает не так как нужно... Запрос на сервер отправляется больше одного раза |
Цитата:
Цитата:
|
Да именно, можно ли как то вызвать createPost после загрузки все картинок?
Что то ни чего в голову не идет |
Цитата:
Ведь количество картинок всегда можно узнать. Так же можно определить индекс "очередной" картинки... Останется сложить все воедино. |
Почему то сразу не додумался, все очень просто)
Добавил в код:
var fileList = $('#file_list');
var itemCount = fileList.find('li').length;
var updateCount = 0;
$("#upload").click(function() {
fileList.find('li').each(function() {
var item = this;
// Здесь File API, каждая картинка отправляется на сервер
// по отдельности, т.е каждая итерация это запрос
// пример функции которая возвращает ответ от сервера.
...
oncomplete: function(response) {
updateCount++;
$(item).removeClass('update').addClass('read');
createPost();
}
)};
function createPost() {
if (!fileList.find('li').hasClass('update') &&
updateCount == itemCount) {
// Последний запрос к серверу он должен выполниться только один раз.
}
}
|
| Часовой пояс GMT +3, время: 00:00. |