我正在使用 MVC2 的内置 ajax 功能。基本上,用户键入一个搜索查询,然后在每次按键时显示一组查询结果。这在几乎所有情况下都可以正常工作,但有时服务器对单个响应有点慢,因此下一次击键的结果会先于上一次返回。当先前的击键结果集最终返回给客户端时,它将覆盖实际应该显示的较新搜索查询的结果。
我的代码或多或少遵循以下几行:
<% using (Ajax.BeginForm("SearchUser", null,
new AjaxOptions()
{ UpdateTargetId = "findUserResults" },
new { id = "findUserAjaxForm" })) {%>
每次击键都会提交此表单,从而在“findUserResults”元素中输出结果。
如何在仍然使用 MVC2 中提供的内置函数的同时防止显示较旧的结果?
最佳答案
您可以在每个请求中发送一个时间戳,并将其与结果一起返回,然后仅在时间戳晚于前一个请求时才显示结果。
new Date().getTime()
返回纪元开始后的毫秒数。
或者,您可以在每个页面上使用递增计数器。
关于.net - 防止竞争条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4503321/