У меня есть функция в JS содержит цикл, который вызывает вызов AJAX на каждой итерации. Вызов вставляет checked
элементов в БД и возвращает результаты этих элементов на той же странице в следующем разделе.Как замедлить вызов Ajax?
Проблема заключается в том, что когда я проверяю, например, 4 из 3 групп, на страницу добавляются только флажки последней группы. Однако, когда я использую alert()
, я могу видеть все элементы.
Я использовал setTimeout, но я получил ошибку в коде. Я также добавил строки, чтобы дать больше времени на вызов AJX, но проблема остается. Поэтому я задаюсь вопросом, есть ли решение для замедления кода без использования alert()
.
Это мой сценарий:
addAptitudeField : function(currentAutocompleteField, idChamp) {
var currentAutocompleteFieldBind = currentAutocompleteField;
var idChampBind = idChamp;
window.setTimeout(function() {
// Code ...
var paramDwr = {};
var newDivName = "div" + idChamp + lastValueId;
paramDwr[attributs.r_divId] = newDivName;
paramDwr[attributs.r_currentValue] = currentValue;
paramDwr[attributs.r_hiddenIdsField] = hiddenIdsField.id;
paramDwr[attributs.r_lastValueId] = lastValueId;
paramDwr[attributs.r_itemmod] = nbAptitudesCat % 2 == 0;
// setTimeout (RepertoireDwr.ligneSuppEtSpanMessage, 1000) doesn't work
RepertoireDwr.ligneSuppEtSpanMessage(paramDwr, function(ajaxPage) {
divCategorie.update(divCategorie.innerHTML + ajaxPage.texte);
aptitudeAvecDetail.remetsValeursStockees();
var btnSuppression = $(newDivName).getElementsByTagName('img')[0];
btnSuppression.setAttribute("onclick", "formulaireFiche.updateCSS('" + newDivName + "');" + btnSuppression.getAttribute("onclick") + "fiche.updateCategorieSuppressionAptLieeUo(\'divCat" + currentCategorie + "\');"); });
}
//
// alert() : It works in this case.
//
// for (var i=0; i<5000000; i++) ; it doesn't work
}, 400);
}
Заранее спасибо за вашу помощь и время.
Что петля? Как это «не работает»? Какую ошибку вы получаете? На самом деле непонятно, о чем вы спрашиваете, но это определенно звучит так, будто вы пытаетесь решить проблему, создавая другую проблему. – David
Я спас свой вопрос к тому, что, я думаю, вы имеете в виду. Пожалуйста, ознакомьтесь с нашими исправлениями – Martijn
Большое спасибо @Martijn, yeap, это именно то, о чем я прошу, я извиняюсь за свой язык. – Chinovski