Что делает "async: false" в jQuery.ajax()?

В частности, как он отличается от значения по умолчанию (async: true)?

В каких обстоятельствах я хочу явно установить async в false, и имеет ли он какое-то отношение к предотвращению запуска других событий на странице?

+176
источник поделиться
6 ответов

Это имеет какое-то отношение к предотвращение других событий на странице от стрельбы?

Да.

Установка async в false означает, что оператор, который вы вызываете, должен завершиться до того, как вызывается следующий оператор в вашей функции. Если вы установите async: true, то этот оператор начнет выполнение, и следующий оператор будет вызван независимо от того, завершен ли оператор async.

Для получения дополнительной информации см.: jQuery ajax успешная анонимная функциональная область

+216
источник
  • async:false= Код приостановлен. (Другой код ждет, чтобы завершить это.)
  • async:true= Код продолжение. (Ничто не приостанавливается. Другой код не ждет.)

Проще всего это.

+65
источник
другие ответы

Связанные вопросы


Похожие вопросы

Async:False будет содержать выполнение кода отдыха. Как только вы получите ответ от ajax, только тогда остальная часть кода будет выполнена.

+18
источник

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

+15
источник

С

https://xhr.spec.whatwg.org/#synchronous-flag

Синхронный XMLHttpRequest за пределами рабочих находится в процессе удаления с веб-платформы, поскольку он оказывает вредное воздействие на конечный пользовательский опыт. (Это длительный процесс, который занимает много лет.) Разработчики не должны передавать false для аргумента async, когда глобальная среда JavaScript является средой документа. Пользовательским агентам настоятельно рекомендуется предупреждать о таком использовании в инструментах разработчика и может экспериментировать с вызовом исключения InvalidAccessError, когда это происходит. В будущем направлении будет разрешено только XMLHttpRequests в рабочих потоках. Сообщение должно быть предупреждением об этом.

+5
источник

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

 $(window).unload(
        function(){
            $.ajax({
            url: 'your url',
            global: false,
            type: 'POST',
            data: {},
            async: false, //blocks window close
            success: function() {}
        });
    });
+2
источник

Посмотрите другие вопросы по метке или Задайте вопрос