Как лучше всего обрабатывать непоследовательные запросы Ajax (предпочтительно с использованием jQuery)?
Например, запрос Ajax отправляется из браузера пользователя каждый раз, когда изменяется поле.Пользователь может изменить dog_name
на «Пушистый», но мгновение спустя он меняет его на «Точечный».Первый запрос по какой-либо причине задерживается, поэтому он поступает на сервер после второго, и в итоге ее собаку называют «Пушистый» вместо «Точечный».
Я мог бы передать временную метку на стороне клиентавместе с каждым запросом, и пусть сервер отслеживает его как часть каждой записи Dog
и игнорирует предыдущие запросы на изменение того же поля (но только если разница меньше 5 минут, если пользователь меняет время наее машина).
Является ли этот подход достаточно устойчивым, или есть лучший, более стандартизированный подход?
РЕДАКТИРОВАТЬ:
Мэтт сделал большойуказать в своем комментарии.Намного лучше сериализовать запросы, чтобы изменить одно и то же поле, так есть ли стандартный способ реализации очередей запросов Ajax?
EDIT # 2
В ответ на @ cherouvim'sкомментарий, я не думаю, что мне придется заблокировать форму.Поле изменяется, чтобы отразить изменение пользователя, запрос на изменение помещается в очередь.Если в очереди ожидает запрос на изменение того же поля, удалите этот старый запрос.2 вещи, которые мне еще нужно было бы рассмотреть:
Размещение запроса в очереди является асинхронной задачей.Я мог бы иметь обработчик обратного вызова из предыдущего запроса Ajax отправить следующий запрос в очереди.Код Javascript не является многопоточным (или ... так ли это?)
Если запрос не выполнен, мне потребуется пользовательский интерфейс, чтобы отобразить состояние последнего успешного запроса.Таким образом, если пользователь меняет имя собаки на «Spot» и запрос Ajax не выполняется, поле должно быть возвращено на «Fluffy» (последнее значение успешно зафиксировано).
Какие проблемы мне не хватает?