2013-12-10 2 views
0

В моем веб-приложении есть список контактов с названием «Предпочтительные контакты». Этот список обновляется каждые 2 минуты. В этом списке, пользователь может выполнить несколько действий, например, при выборе контакта и сделать вызов правой кнопкой мыши, удалить контакт из списка и т.д.обновить список контактов механизм

Запрос обрабатывается следующим образом:

Browser --> Ajax Request --> Java Servlet --> SOAPRequest --> SOAPResponse --> 
Ajax Response --> Browser 

Проблема заключается в том, как синхронизировать действия конечного пользователя с автоматическим механизмом обновления?

Давайте ниже сценарий:

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

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

Но я хочу синхронизировать эти действия таким образом, чтобы эти вещи оставались прозрачными для конечного пользователя? Есть ли способ сделать это в Ajax?

ответ

0

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

Один из способов сделать это - иметь порядковый номер для запросов, например, var requestNum = 0, который увеличивается с каждым запросом. Обратный вызов для каждого запроса обновления должен знать свой собственный уникальный requestNum, а если его собственный requestNum меньше текущего requestNum, тогда обратный вызов ничего не сделает, потому что это будет означать, что был сделан следующий запрос, который будет отвечать более точно.

Другим, более агрессивным способом достижения этого будет abort активных запросов, если пользователь выполнит какие-либо дополнительные действия, которые повлияют на достоверность этих ответов на запрос, как в случае, описанном вами.

Смежные вопросы