Узнайте, как прервать вызовы ajax, чтобы предотвратить перекрытия.

AJAX, другими словами, асинхронный JavaScript и XML - это веб-технология нового поколения, которая позволяет создавать асинхронные запросы на стороне клиента.

Приведенный ниже код - очень простой пример выполнения вызова AJAX без обновления страницы. Есть кнопка. Когда вы нажимаете кнопку, выполняется асинхронный вызов.

Код генерирует идентификатор от 1 до 10. Затем отправьте этот идентификатор в службу. Сервисы возвращают данные пользователя, которые мы сгенерировали случайным образом. Наконец, мы помещаем изображение полученного пользователя на нашу страницу. Выглядит это так:

Вы можете видеть, когда мы нажимаем на кнопку, загружается фотография пользователя. Делаем все асинхронно.

На данный момент с этой асинхронной структурой все выглядит хорошо. Но проблемы также начинаются с этой асинхронности.

Что произойдет, если вы нажмете кнопку несколько раз очень быстро?

Это будет так:

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

Чтобы безопасно использовать асинхронные службы, мы должны быть уверены, что если есть запрос, сделанный ранее, мы должны прервать предыдущий запрос. Потому что мы делаем новый запрос, и теперь нет необходимости обрабатывать предыдущий. В противном случае можно увидеть некоторые побочные эффекты, как в нашем примере.

Во-первых, мы должны передать запрос AJAX в переменную:

Теперь мы можем обработать запрос. Запрос AJAX также является экземпляром объекта XMLHttpRequest. Теперь мы можем использовать его функции, чтобы проверить текущее состояние и прервать предыдущий запрос.

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

Вы можете видеть, что новая версия нашего вызова AJAX выглядит так:

Вы можете видеть, когда мы последовательно нажимаем несколько раз, предыдущие запросы отменяются и выполняется только последний.

Теперь вы можете безопасно выполнять вызовы AJAX без каких-либо побочных эффектов.