Асинхронное программирование немного сложнее, потому что последствия выполнения запроса инкапсулируются в функции, а не следуют за оператором запроса. Но поведение в реальном времени, которое испытывает пользователь, может быть значительно лучше, потому что он не увидит вялого сервера или медленной сети, заставляющих браузер действовать так, как если бы он потерпел крах. Синхронное программирование неуважительно
и не должно использоваться в приложениях, которые используются людьми.
Дуглас Крокфорд ( блог YUI )
Хорошо, пристегни свои сиденья, потому что это будет ухабистая поездка. Все больше и больше людей спрашивают о динамической загрузке скриптов через javascript, кажется, это горячая тема.
Основные причины, по которым это стало таким популярным:
- модульность на стороне клиента
- более легкое управление зависимостями
- обработка ошибок
- преимущества производительности
О модульности : очевидно, что управление зависимостями на стороне клиента должно осуществляться прямо на стороне клиента. Если требуется определенный объект, модуль или библиотека, мы просто запрашиваем его и загружаем динамически.
Обработка ошибок : если ресурс выходит из строя, у нас все еще есть возможность заблокировать только те части, которые зависят от затронутого скрипта, или, возможно, даже дать ему еще одну попытку с некоторой задержкой.
Производительность стала конкурентным преимуществом между веб-сайтами, теперь это фактор ранжирования в поиске. Что могут делать динамические сценарии, так это имитировать асинхронное поведение в отличие от способа блокировки по умолчанию того, как браузеры обрабатывают сценарии. Скрипты блокируют другие ресурсы, скрипты блокируют дальнейший анализ HTML-документа, скрипты блокируют пользовательский интерфейс. Теперь с помощью динамических тегов сценария и его кросс-браузерных альтернатив вы можете выполнять реальные асинхронные запросы и выполнять зависимый код только тогда, когда они доступны. Ваши скрипты будут загружаться параллельно даже с другими ресурсами, и рендеринг будет безупречным.
Причина, по которой некоторые люди придерживаются синхронного написания сценариев, заключается в том, что они к нему привыкли. Они думают, что это способ по умолчанию, это самый простой способ, а некоторые даже могут подумать, что это единственный способ.
Но единственное, о чем мы должны заботиться, когда нужно решить этот вопрос относительно дизайна приложения, - это опыт конечного пользователя . И в этой области асинхронность обыграть невозможно. Пользователь получает немедленные ответы (или произносит обещания), а обещание всегда лучше, чем ничего. Пустой экран пугает людей. Разработчики не должны лениться, чтобы улучшить воспринимаемую производительность .
И напоследок несколько слов о грязной стороне. Что вам нужно сделать, чтобы он работал в разных браузерах:
- научиться думать асинхронно
- сделайте свой код модульным
- организовать свой код, чтобы хорошо обрабатывать ошибки и крайние случаи
- прогрессивно улучшать
- всегда заботиться о правильном количестве отзывов
eval()
каждый файл в указанном порядке, в противном случае просто сохраните ответ).