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