Как отобразить «Загрузка» при выполнении «синхронного» вызова AJAX в чистом JavaScript? - PullRequest
4 голосов
/ 05 ноября 2011

Я хочу убедиться, что результат показан пользователю, поэтому я делаю синхронный вызов AJAX.Довольно просто отобразить индикатор «Загрузка» с асинхронным AJAX (примеры везде), но когда я использую синхронный вызов AJAX с XMLHttpRequest, изображение GIF индикатора загрузки вообще не отображается.

Некоторыесказал, что при синхронном вызове показывать индикатор невозможно (блокировать до получения ответа от сервера).Но я просто хочу спросить, есть ли способ сделать это.

Ответы [ 2 ]

8 голосов
/ 05 ноября 2011

Это «невозможно», потому что Javascript является однопоточным, и синхронный вызов блокирует обновления пользовательского интерфейса.

Однако вы можете отобразить анимированную «загрузочную» графику до запуска синхронного вызова AJAX и удаления его в случае успеха или неудачи.Я полагаю, что большинство браузеров смогут продолжать рендеринг анимированного GIF-файла, даже если он технически заблокирован для синхронного вызова.

0 голосов
/ 11 мая 2015

Возможно, смотрите верхний ответ здесь: Как показать ожидающее сообщение во время синхронизации вызова ajax в браузере

Решение состоит в том, чтобы показать ваше загрузочное сообщение, ручное управлениевернуться в браузер, а затем заблокировать все с помощью синхронного удаленного вызова.Один из способов сделать это - использовать setTimeout с задержкой, равной нулю

...