【问题标题】:Ajax reques x number of times is it possible to have end result from one of the previous requests?Ajax 请求 x 次是否有可能从先前的请求之一获得最终结果?
【发布时间】:2015-10-09 16:02:18
【问题描述】:

这种情况可能吗?

用户单击一个按钮,该按钮对 MVC c# 控制器操作进行 ajax 调用,该操作执行大量计算并返回一个 json。 如果用户快速单击按钮 x 次,最后最后的 json 结果是否可能是前一个 x-1 请求之一的结果?

【问题讨论】:

  • TCP/IP 的工作方式是否保证了顺序?
  • 期望的行为是什么? (您会考虑在服务器上添加一个计时器吗?还是在 javascript 中添加一个控件更好?)
  • 最后一次点击要最后处理的按钮。但是,如果请求的处理速度不同,那么我不确定这是否会发生
  • 有人可以快速点击按钮的用例是什么?如果用户正在玩游戏,我可能会理解这一点。商业网站,见鬼!假设您正在(模拟)来自服务器的小文件中的流式音频。不保证文件将按照发送的顺序到达。使用计数器,如果音频文件有问题,请将其删除。显然,很大程度上取决于您的具体用例..

标签: jquery ajax model-view-controller request


【解决方案1】:

回答您的问题,是的,有可能。这甚至不是那么不可能。

【讨论】:

  • 您是否知道任何方式来对请求进行排队,例如确保最后一个结果来自最后一个请求。我想一个明显的解决方案是防止多个请求。另一个将是 ajax 请求以中止先前的请求然后执行自身。我不确定这将如何影响服务器部分 - 我猜在 MVC 控制器的情况下仍会执行请求,但只是 javascript 部分不会期望结果。
  • 简单的方法是建立自己的请求队列,当一个请求进来时,再请求队列中的下一个。或者如你所说,取消之前的请求并发出新的请求。
【解决方案2】:

是的,这取决于请求的处理速度。

我在建议下拉菜单中遇到了类似的问题。用户输入快速,结果以不连贯的方式附加。

【讨论】:

  • 您是如何解决这个问题的?您是否在发出新请求之前中止了上一个请求?
  • 有点不同。每当触发新请求时,我都会删除旧结果并开始考虑新结果并使用它们
猜你喜欢
  • 2021-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多