在我的网络应用程序中,有一个名为“首选联系人”的联系人列表。此列表每2分钟刷新一次。在此列表中,用户可以执行多项操作,例如选择联系人并在右键单击时执行呼叫,从列表中删除联系人等。
请求按以下方式处理:
Browser --> Ajax Request --> Java Servlet --> SOAPRequest --> SOAPResponse -->
Ajax Response --> Browser
问题是如何使用自动刷新机制同步最终用户操作?
让我们采取以下方案:
当列表在2分钟后刷新并且同时用户删除一个联系人时,刷新列表也包含已删除的联系人,因为刷新请求之前已发送到删除请求。
目前,我已经处理了这种情况,例如在刷新过程中,用户无法对列表执行任何编辑操作。其他选项可以像排队用户在刷新时执行的所有操作和
但我希望以这样的方式同步这些操作,使这些事情对最终用户保持透明?在Ajax中有没有办法做到这一点?
答案 0 :(得分:0)
您可以在额外的用户操作之前忽略对所做请求的响应。
执行此操作的一种方法是在请求上设置序列号,例如,var requestNum = 0
随每个请求递增。每个刷新请求的回调应该知道它自己的唯一requestNum
,如果它自己的requestNum
小于当前requestNum
,那么回调将什么都不做,因为这意味着后来的请求已做出更准确的回应。
如果用户执行会影响这些请求响应有效性的任何其他操作,则另一种更积极的方法是abort个活动请求,如您所描述的那样。