По нажатию на кнопку идет post запрос, который возвращает html со скриптами, содержание которого зависит от параметров (param).
function GetPlaces(param) {
$.post(places_url, param, function(data) {
$(".places").html(data);
});
}
При быстрой смене параметров и многократном нажатии на кнопку отрисовка выполняется естественно не порядке нажатия на кнопку. Нужно реализовать нечто вроде очереди (чтобы при повторном нажатии на кнопку отправка происходила, только после полной отрисовки и выполнения всех скриптов первого нажатия.
Пытаюсь сделать так, но желаемого результата нет:
defPlaces = $.Deferred();
function GetPlaces(param) {
defPlaces = defPlaces.then(
$.post(places_url, param, function(data) {
$(".places").html(data);
})
);
}
Что я делаю не так?
Конструкция, которую вы предложили, выглядит очень странно. Как минимум, отдавать важную часть управляющей конструкции с сервера при каждом запросе - неправильно.
В вашей исходной конструкции было три ошибки:
resolve
(по-хорошему, его надо было вызвать сразу же). Также для создания изначально заресолвленного промиза можно воспользоваться методом when
.then
функцию для обратного вызова.then
.Вот итоговый код:
defPlaces = $.when();
function GetPlaces(param) {
defPlaces = defPlaces.then(function () {
return $.post(places_url, param, function(data) {
$(".places").html(data);
})
});
}
Сработала следующая конструкция:
defPlaces = $.Deferred();
function GetPlaces(param) {
defPlaces.done(function() { setPlaces(param); });
}
function setPlaces(param) {
defPlaces = $.Deferred();
$.post(places_url, param, function(data) {
$(".places").html(data);
});
}
В html, который возвращается в post, после выполнения всех скриптов добавить:
defPlaces.resolve();
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Добрый день! Хочу подвесить обработчик на checkbox, для этого решил проверить его состояние при клике на checkbox, те
Пытаюсь с помощью Selectric выбрать текущий (выбранный) элемент LI, но ничего не получается, подскажите кто знает как это можно сделать
Запутался в этих объектах, имея следующее, как получить значение id?