2013-05-01 3 views
3

В чем разница между асинхронным и синхронным и как разница влияет на запрос?Почему асинхронные XMLHttpRequests предпочтительнее, чем синхронные запросы?

+4

Это не влияет на * запрос *, так как это влияет на браузер и, следовательно, на опыт пользователя. Синхронный запрос заставляет браузер более или менее «замораживать», ожидая ответа. – Pointy

+0

Не могли бы вы объяснить, почему вы думаете, что они «предпочитают»? Как и каждый инструмент, есть хорошие времена и плохие времена для использования асинхронных или синхронных запросов. –

+0

@PlatinumAzure: Нет, он не может - иначе он не спрашивал :-) – Bergi

ответ

5

Из статьи Mozilla на Synchronous and asynchronous requests:

XMLHttpRequest поддерживает синхронные и асинхронные коммуникации. В общем, однако, асинхронные запросы должны быть предпочтительнее синхронных запросов по соображениям производительности.

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

Асинхронные запросы являются основной причиной, по которой XMLHttpRequest существует. XMLHttpRequest подкрепляет AJAX, идея которого заключается в том, чтобы ваш код JavaScript работал и ваш пользователь делал все с вашей страницы, пока ваш JavaScript общается с сервером в фоновом режиме. Например, Gmail загружает ваши электронные письма.

Синхронные запросы блокируют запуск вашего скрипта, пока передача завершена. Проще говоря, нет причин для этого, когда доступны асинхронные запросы. Было бы очень неприятно, если бы ваша Gmail все время замерзала, не так ли? Вы редко, если хотите, хотите использовать синхронный запрос.

There are circumstances you must use a synchronous request, но за пределами этих обстоятельств вы, вероятно, не будете иметь абсолютно никаких оснований делать синхронный запрос и все причины использовать асинхронный.

2

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

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

+0

В каких (видимо, редких) обстоятельствах синхронный запрос будет более полезным для разработчика? –

+1

Когда все должно происходить последовательно, или один запрос зависит от результата другого запроса, чтобы он мог работать. –

+1

@Mark: Даже тогда есть другие способы легко направить асинхронные запросы (ключевые слова: обещания, очереди) –

Смежные вопросы