Вы можете использовать закрывающий вызов setTimeout () с постепенно увеличивающимися значениями.
var items = ['item1', 'item2', 'item3'];
function functionToExecute(item) {
console.log('function executed for item: ' + item);
}
$.each(items, function (index, item) {
var timeoutValue = index * 2000;
setTimeout(function() {
console.log('waited ' + timeoutValue + ' milliseconds');
functionToExecute(item);
}, timeoutValue);
});
Результат:
waited 0 milliseconds
function executed for item: item1
waited 2000 milliseconds
function executed for item: item2
waited 4000 milliseconds
function executed for item: item3
complete
выполняется после выполнения обратного вызова либо success
, либо error
.
Возможно, вам следует проверить второй параметр полные
предложения тоже. Это строка, содержащая тип успеха, который имел ajaxCall.
Различные обратные вызовы описаны немного подробнее здесь jQuery.ajax (options)
Я думаю, вы упустили тот факт, что завершено
и функция success
(я знаю несовместимый API) получают разные данные, передаваемые. success
получает только данные, complete
получает все XMLHttpRequest
объект. Конечно, в строке данных нет свойства responseText
.
аргументы: данные, возвращенные из
сервер, отформатированный в соответствии с
параметр dataType и строка
описание статуса.
завершено
Функция получает два аргументы: объект XMLHttpRequest и строка, описывающая тип успех запроса.
Если вам нужен доступ ко всему объекту XMLHttpRequest
в обратном вызове успеха, я предлагаю попробовать это.
var myXHR = $.ajax({
...
success: function(data, status) {
...do whatever with myXHR; e.g. myXHR.responseText...
},
...
});
"complete" выполняется, когда вызов ajax завершен. "success" выполняется, когда вызов ajax завершается успешным кодом ответа.