В jquery ajax есть параметр
$.ajax({async: true, ...});
В чем разница между установкой значения true
и false
?
В jquery ajax есть параметр
$.ajax({async: true, ...});
В чем разница между установкой значения true
и false
?
Вы устанавливаете 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) {
// .....
}
});
Также ознакомьтесь с этой статьей
Настройка на false
блокирует основной поток (отвечает за выполнение JavaScript, отображение экрана и т.д.) и ждет завершения XHR.
Это почти всегда ужасная идея. Пользователям не нравятся невосприимчивые пользовательские интерфейсы.
асинхронный (по умолчанию: true
)
Тип: логическое значение
По умолчанию все запросы отправляются асинхронно (т.е. по умолчанию установлено значение true
). Если вам нужны синхронные запросы, установите для этой опции значение false
. dataType: "jsonp"
запросы и dataType: "jsonp"
запросы dataType: "jsonp"
не поддерживают синхронную работу. Обратите внимание, что синхронные запросы могут временно блокировать браузер, отключая любые действия, когда запрос активен. Начиная с jQuery 1.8, использование async: false
с jqXHR ($.Deferred
) устарело; Вы должны использовать опции обратного вызова success/error/complete вместо соответствующих методов объекта jqXHR, таких как jqXHR.done()
.
Вот Источник.