Что такое скрытый запрос AJAX?
Я заметил увеличение использования скрытых запросов AJAX, предназначенных для немедленного выполнения действий пользователя. Я буду называть этот тип запроса AJAX неблокирующим. Это AJAX-запрос, выполненный без уведомления пользователя, что он выполняется, он выполняется в фоновом режиме и работает тихо ( нет подробного указания на успешное завершение вызова AJAX ). Цель состоит в том, чтобы заставить операцию казаться, что она произошла немедленно, когда она действительно не закончена.
Вот примеры неблокирующего AJAX-запроса;
- Пользователь нажимает удалить коллекцию писем. Элементы немедленно исчезают из папки «Входящие» и могут продолжать другие операции. Тем временем AJAX-запрос обрабатывает удаление элементов в фоновом режиме.
- Пользователь заполняет форму для новых записей. Клики сохранить. Новый элемент появляется в списке немедленно. Пользователь может продолжать добавлять новые записи.
Чтобы уточнить, вот примеры блокирования AJAX-запроса;
- Пользователь нажимает удалить коллекцию писем. Появится курсор с песочными часами. Запрос AJAX сделан, и когда он отвечает, курсор песочных часов выключен. Пользователь должен подождать секунду для завершения операции.
- Пользователь заполняет форму для новых записей. Клики сохранить. Форма становится серой с анимацией загрузчика AJAX. Появится сообщение «Ваши данные были сохранены», и новая запись появится в списке.
Разница между двумя вышеупомянутыми сценариями состоит в том, что неблокирующая настройка AJAX не обеспечивает обратную связь о выполнении операции, а блокирующая настройка AJAX делает.
Риск скрытых запросов AJAX
Самый большой риск этого стиля запроса AJAX заключается в том, что веб-приложение может находиться в совершенно другом состоянии при сбое запроса AJAX.
Например, неблокирующий пример;
- Пользователь выбирает кучу писем. Нажимает кнопку удаления. Похоже, операция происходит немедленно (элементы просто исчезают из списка). Затем пользователь нажимает кнопку «Создать» и начинает вводить новое письмо. В это время код JavaScript обнаруживает сбой запроса AJAX. Скрипт может показывать сообщение об ошибке, но на самом деле это бессмысленно.
Альтернативно, пример блокировки;
- Пользователь выбирает кучу писем. Нажимает кнопку удаления. Видит песочные часы, но операция не удается. Они получают сообщение об ошибке «ошибка. Бла-бла-бла». Они возвращаются обратно в список электронных писем, и у них все еще есть письма, которые они хотели удалить. Они могут попытаться удалить их снова.
Существуют и другие технические риски для выполнения неблокирующих запросов AJAX. Пользователь может закрыть браузер, может перейти на другой веб-сайт, и он может перейти в другое место в текущей сети, что делает контекст любого сообщения об ошибке бессмысленным.
Так почему же это так популярно?
Facebook, Google, Microsoft и т. Д. И т. Д. - все эти большие домены все чаще используют неблокирующие AJAX-запросы, чтобы заставить операции казаться, что они выполняются мгновенно. Я также видел увеличение количества редакторов форм, у которых нет кнопки сохранения или отправки . Как только вы покидаете поле или нажимаете ввод. Значение сохранено. Нет в вашем профиле обновленного сообщения или шага сохранения.
Запросы AJAX не являются достоверными и не должны рассматриваться как успешные до тех пор, пока они не будут выполнены, но многие крупные веб-приложения работают именно так.
Эти веб-сайты, которые используют неблокирующие вызовы AJAX для имитации реагирующих приложений, несут ненужный риск за счет быстрого появления?
Это шаблон дизайна, которому мы все должны следовать, чтобы оставаться конкурентоспособными?