У меня есть страница, которая запускает запросы Ajax для проверки на стороне сервера. Мне нужно выполнить действие, когда все запросы ajax закончили загрузку или были завершены.
Для этого я использую Ext.Ajax.isLoading () в рекурсивной функции следующим образом:
function chechValid(){
if(Ext.Ajax.isLoading()){
checkValid();
}else{
//Code for Action 1
}
}//EOF
checkValid();
//Code for Action 2
Проблема в том, что при этом браузеры выдают следующие ошибки:
Mozill FF - слишком много рекурсий
IE - переполнение стека в строке: 18134
Если эта рекурсия тяжелая вещь для браузеров, то как выполнить задачу, когда все запросы Ajax закончили загрузку?
Использование задержки - это не то, что я хочу, поскольку, если используется задержка, браузер начинает выполнять другой код (например, «Код для действия 2», как описано выше), который не является ожидаемым.
Основная цель заключается в том, чтобы браузер не выполнял ничего, если все запросы Ajax не выполнены и после их завершения он должен выполнить определенное действие.
Любые предложения / помощь по этому вопросу?
Заранее спасибо.
PS: использование ExtJs 4.0.7
(Обновлено) Подробнее о реальной ситуации: -
Вот краткое описание ситуации: существует форма, в которой мне нужно выполнить проверки на стороне сервера в различных областях. Я делаю это, запуская запрос ajax на событие размытия. В зависимости от ответа сервера проверки Ajax, запущенного при размытии, поля помечаются как недействительные, и отправка формы не допускается. (Предотвращение события «изменение», поскольку оно приводит к значительным накладным расходам на сервере из-за большого количества запросов Ajas, а также приводит к колебательным воздействиям на поле при получении ответа от различных таких запросов Ajax).
Все работает хорошо, за исключением одного случая - когда пользователь изменяет значение поля и вместо «табуляции» из поля он непосредственно нажимает кнопку «Сохранить». В этом случае, однако, событие размытия запускается, но обработка «Сохранить» не ожидает ответа Ajax Validation и отправляет форму. Таким образом, мне как-то нужно проверить, закончили ли Ajax-запросы загрузку и сохранили ли форму. requestComplete, к сожалению, не будет служить цели здесь. И если попытаться использовать рекурсию, то, конечно, браузер зависает из-за высокого использования ресурсов. То же самое происходит, если я пытаюсь использовать обходной сценарий паузы (как здесь указано - Javascript Sleep ).
Есть ли возможный обходной путь для этого?
ТИА