Предотвращение условий гонки - PullRequest
3 голосов
/ 21 декабря 2010

Я использую встроенную функциональность ajax в MVC2.В основном пользователь вводит поисковый запрос, и при каждом нажатии клавиши отображается набор результатов для запроса.Это работает нормально почти во всех случаях, но иногда сервер работает немного медленно с одним ответом, и, таким образом, результат для следующего нажатия клавиши возвращается перед предыдущим.Когда предыдущий набор результатов нажатия клавиш окончательно возвращается клиенту, он перезаписывает результаты для более нового поискового запроса, который должен был быть фактически отображен.

Мой код более или менее повторяет эти строки:

    <% using (Ajax.BeginForm("SearchUser", null, 
             new AjaxOptions() 
                    { UpdateTargetId = "findUserResults" }, 
             new { id = "findUserAjaxForm" })) {%>

Каждое нажатие клавиши отправляет эту форму и, таким образом, выводит результаты в элементе 'findUserResults'.

Как можно предотвратить отображение более старых результатов при использовании встроенных функций, предусмотренных в MVC2??

1 Ответ

0 голосов
/ 22 декабря 2010

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

new Date().getTime()

возвращает миллисекунды с начала эпохи.

В качестве альтернативы вы можете просто использовать инкрементный счетчик на каждой странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...