Почему то сразу не додумался, все очень просто)
Добавил в код:
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) {
// Последний запрос к серверу он должен выполниться только один раз.
}
}