У меня есть массив для загрузки данных, и я хочу, чтобы они отправляли сервер поочередно. Я хочу, чтобы предыдущий завершил, прежде чем отправить следующий. Собственно, после каждого ответа я хочу решить, следует ли отправлять следующий или нет.AJAX вызов в цикле массива, вызов следующего только после предыдущего завершения
while (packetCount < bulkUploadPackets.length) {
d = d.then(save(bulkUploadPackets[packetCount]))
.then(function(uploadResponse) {
//I want to come here after first call complete
//before second call is fired and so on
packetCount++;
});
}
save: function(modelToSave) {
var defer = $.Deferred();
var self = this;
this.model = modelToSave;
Backbone.sync('create', this, {
success: function(data, textStatus, jqXHR) {
console.log("success" + data);
defer.resolve(data);
},
error: function(response) {
defer.reject(errorObj);
}
});
return defer.promise();
}
AJAX является асинхронным, и вы должны использовать его в асинхронном режиме. Если вы хотите сохранить некоторый порядок обработки, вам не следует бороться с AJAX, чтобы сделать это, а скорее реализовать эту логическую серверную сторону и отправить весь массив по одному запросу ... – MarioDS