Показывать загрузчик до тех пор, пока все вызовы ajax asyc не будут завершены
Привет,
Пожалуйста, проясните следующую проблему, если есть какое-либо решение -
В ASP.NET я вызываю 4 веб-метода параллельно, используя $. ajax с async=true. Теперь давайте предположим, что есть 4 функции, которые я вызываю, чтобы использовать преимущества ajax как -
BindGridRecords();
BindNotifications();
BindProjectFiles();
BindFileCount();
Все они вызываются в той же последовательности, что и описано выше. Я использовал загрузчик gif-изображения, чтобы показать загрузчик в полноэкранном режиме в div и вызвал первую функцию, чтобы показать его и скрыть в самой последней функции (я знаю, что это не очень хороший способ, потому что может быть возможно, что последняя функция может завершиться раньше первой в асинхронных вызовах). Теперь у меня нет никакого выхода как показать изображение загрузчика до тех пор, пока все вышеперечисленные вызовы не будут завершены Не имеет значения, какая из них завершилась первой.
Что я уже пробовал:
Я пробовал использовать функцию$. when (), но похоже, что она вызывает синхронно и ухудшает производительность. Таким образом, цель асинхронных вызовов не используется.
На данный момент я использую async=false и устанавливаю функции таким образом, чтобы другая начиналась после завершения ранней. Но это требует времени.
я тоже пробовал это, но это не работает идеально, потому что это влияет и на другие вызовы
$(document).ajaxStart(function() { $('#overlay').show(); }); $(document).ajaxStop(function() { $('#overlay').hide(); });
F-ES Sitecore
Определите переменную count с количеством вызываемых методов
количество var = 4;
при полном событии каждого ajax-метода вызывается функция, которая уменьшает количество и, если оно равно 0, удаляет загрузчик.
функция finishAjax()
{
считать--;
if (count == 0)
{
// удалить загрузчик
}
}
Ajay_Saini
О-о-о, отличная идея. Вы правы, я надеюсь, что это сработает. Я постараюсь с таким подходом увидеть эффект.