Когда целесообразно использовать синхронный ajax?
Я просто читал еще один вопрос о синхронном ajax-вызове jQuery, и мне стало интересно:
Какие обстоятельства делают синхронную версию ajax-вызова полезной/необходимой?
В идеале я хотел бы привести пример, и почему синхронный лучше, чем стандартный ajax.
Ответы
Ответ 1
Единственный разумный пример, о котором я могу думать (который не может работать по другому пути), вызывает вызов в window.onbeforeunload
, где вам нужно, чтобы он был синхронным, или страница будет двигаться дальше, и запрос никогда не будет полный.
В этом конкретном случае, используя стандартное/асинхронное поведение, вы почти уверены, что запрос умрет слишком рано, чтобы иметь какое-либо влияние или когда-либо связываться с сервером.
Я не говорю, что я выступаю за это, совершенно наоборот (так как это отрицательно влияет на скорость просмотра пользователей). Но... здесь не так много вариантов.
Ответ 2
В итоге, пожалуйста, не используйте синхронные запросы, как говорит @Brandon: это дешевый/простой/быстрый способ избежать обратного вызова. Кроме того, современные браузеры показывают предупреждения, если синхронные запросы сделаны, и нам это не нравится. Сделайте свой мир асинхронным.
Ответ 3
синхронный ajax часто используется для извлечения оцененного с сервера, который необходим для дальнейшей дальнейшей обработки кода на стороне клиента. в этом случае вызов ajax будет блокироваться до тех пор, пока вызов не вернется с требуемым значением. Пример:
javascript-функция должна вычислять заработную плату для сотрудника:
step1: получить идентификатор сотрудника из формы
step2: сделать вызов сервера синхронизации, передав emp.id, чтобы получить его зарплату/час
step3: умножить ставку заработной платы на количество рабочих часов
как вы можете видеть, общая зарплата не может быть вычислена, если вызов сервера не завершен, поэтому это должна быть функция синхронизации, хотя, если вы используете jquery, можно обрабатывать onSuccess для вычисления зарплаты асинхронно, но обработка будет продолжаться в этом случае, если вы ящик сообщения для отображения зарплаты, он будет пустым...
Ответ 4
Я бы рискнул предположить, что это будет хорошо в сценарии, где вы хотите выполнить некоторые вызовы ajax, но у вас есть один вызов, который полагается на результаты другого вызова. Если вы выполняете их синхронно, вы можете дождаться завершения независимой операции до того, как будет вызван зависимый вызов.