Ajax轮询似乎仅在最后一个请求时停留

时间:2019-04-28 19:32:50

标签: javascript jquery ajax settimeout polling

我正在使用Ajax轮询来轮询服务器以获取进度百分比。如果您想知道,我不使用setInterval,因为那样可能会导致多个请求彼此挨饿。我在jQuery.ajax()的“完成”回调中使用setTimeout,并为下一个请求设置了5000毫秒的超时时间。

因此,ajax调用大约每隔5-7秒进行一次(具体取决于上一个ajax调用响应的时间,并且它会缓慢地从0%变为100%。

问题是,尽管所有进行的ajax调用似乎都可以正常工作并且几乎是按时进行的,但是只有最后一个ajax调用才会延迟。并且不会延迟从服务器获得响应。最后一个ajax调用本身是在经过大约2分钟的长时间延迟后进行的。

我已经搜索并阅读了关于SO的所有类似问题/答案,而我的情况似乎很独特,因为只有上次检查状态请求才被延迟,而其他所有请求都可以正常工作。

此ajax调用的服务器日志在几乎所有测试中都给出了以下模式(这是一个示例):

  • Ajax请求1:在0秒时完成-返回了0%的进度
  • Ajax请求2:7秒完成-返回进度17%
  • Ajax请求3:在13秒时完成-返回30%的进度
  • Ajax请求4:在20秒后发出-返回了54%的进度
  • Ajax请求5:在157秒完成-返回了100%的进度

如果需要,我的代码如下:

'c-lb-text-zone'

我花了几天的时间来寻找为什么最后一个ajax调用只是被延迟的原因,甚至不是服务器,而是客户端本身。

0 个答案:

没有答案