Подтвердить что ты не робот

В чем разница между async: false и async: true в jquery ajax?

В jquery ajax есть параметр

$.ajax({async: true, ...});

В чем разница между установкой значения true и false?

4b9b3361

Ответ 1

Вы устанавливаете async на false, когда вам нужно, чтобы запрос ajax был завершен до того, как браузер перейдет к другим кодам:

<script>
    // ...
    $.ajax(... async: false ...); // Hey browser! first complete this request, 
                                  // then go for other codes

    $.ajax(...); // Executed after the completion of the previous async:false request.
</script>

By default, the $. Ajax request in jQuery is set to asynchronous. Имя переменной равно async, а значение равно true. Это дало мне немного путаницы, когда я впервые узнал об этом, поэтому давайте перейдем к этому.

Синхронный (асинхронный: ложный) - Script останавливается и ожидает, пока сервер отправит ответ, прежде чем продолжить. Существуют ситуации, когда синхронный Ajax является обязательным.

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

Из-за опасности потерять запрос и повесить браузер, синхронный javascript не рекомендуется для чего-либо вне (onbefore) разгружать обработчики событий, но если вам нужно услышать обратно с сервера, прежде чем вы сможете разрешить пользователю перемещаться вдали от страницы, синхронный Javascript - это не лучший вариант.

$.ajax({
         url: "file.php",
         type: "POST",
         async: false,
         success: function(data) {
                // .....
         }
      });

Асинхронный (async: true). Где Script позволяет продолжить обработку страницы и будет обрабатывать ответ, если и когда он поступит. Если что-то пойдет не так в запросе и/или передаче файла, ваша программа все еще может распознать проблему и восстановить ее. Обработка асинхронно предотвращает задержку, пока происходит извлечение с сервера, потому что ваш посетитель может продолжать взаимодействовать с веб-страницей, и запрашиваемая информация будет обработана с ответом, обновляющим страницу по мере поступления.

$.ajax({
         url: "file.php",
         type: "POST",
         async: true,
         success: function(data) {
                    // .....
         }
       });

Также ознакомьтесь с этой статьей

Асинхронные и синхронные вызовы AJAX

Ответ 2

Настройка на false блокирует основной поток (отвечает за выполнение JavaScript, отображение экрана и т.д.) и ждет завершения XHR.

Это почти всегда ужасная идея. Пользователям не нравятся невосприимчивые пользовательские интерфейсы.

Ответ 3

асинхронный (по умолчанию: true)

Тип: логическое значение

По умолчанию все запросы отправляются асинхронно (т.е. по умолчанию установлено значение true). Если вам нужны синхронные запросы, установите для этой опции значение false. dataType: "jsonp" запросы и dataType: "jsonp" запросы dataType: "jsonp" не поддерживают синхронную работу. Обратите внимание, что синхронные запросы могут временно блокировать браузер, отключая любые действия, когда запрос активен. Начиная с jQuery 1.8, использование async: false с jqXHR ($.Deferred) устарело; Вы должны использовать опции обратного вызова success/error/complete вместо соответствующих методов объекта jqXHR, таких как jqXHR.done().

Вот Источник.