Аурелия прекратила перегрузку http запросов
Я использую Aurelia и имею несколько обещаний, вызывающих мой API. Если я постоянно нажимаю на кнопку, чтобы выполнить обещания снова и снова и снова, время ожидания сервера закончится. Как я могу остановить / остановить выполнение обещаний, которые я выполняю, и просто получить самое новое, чтобы не перегружать API и не вызывать тайм-аут?
1 ответ
Это не характерно для aurelia, это происходит с любой реализацией асинхронного события.
- Когда вы нажимаете на кнопку, вызывается обработчик события.
- Обработчик событий отправляет асинхронный AJAX-запрос на ваш сервер. Поскольку он асинхронный, ваш код и ваше приложение продолжают работать, пока выполняется запрос.
- Пользователь может снова нажать на кнопку, и одновременно может быть отправлен второй AJAX-запрос, при условии, что вы нажимаете быстрее, чем запросы завершены.
- Что еще хуже, параллельные запросы могут даже завершиться не по порядку (т. Е. Более поздний запрос завершается раньше предыдущего). Ваш код должен быть готов обработать это должным образом.
Если вы не хотите, чтобы это происходило, вы должны предотвратить повторную отправку пользователем до завершения запроса AJAX. Например, вы могли бы:
- Отключить кнопку при отправке запроса; или же
- Отображение модального "загрузочного" экрана / счетчика для предотвращения какого-либо взаимодействия с приложением во время запроса.
Обратите внимание, что предоставление отзывов пользователей - это хороший UX. Сетевой запрос может быть отложен по целому ряду причин, поэтому рекомендуется дать отзыв, чтобы сообщить ему, что что-то происходит.