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, время: 13:51. |