Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 持续运行ajax请求的更好方法?_Jquery_Ajax_Performance_Timeout - Fatal编程技术网

Jquery 持续运行ajax请求的更好方法?

Jquery 持续运行ajax请求的更好方法?,jquery,ajax,performance,timeout,Jquery,Ajax,Performance,Timeout,我现在得到了下面的代码,它将运行一系列ajax请求(40-50),然后再次执行它们。(本质上,他们永远都是如此) 代码: 正如你所看到的,我目前使用的超时在IE上运行得特别慢,有时在chrome上运行得很慢。当我说slow时,我的意思是所有ajax请求都将完成,然后屏幕将随着更新而刷新。IE一直都是这样,偶尔也会出现Chrome。理想情况下,我希望ajax执行它的请求,更新,然后执行下一个ajax请求 有没有更好的方法来持续处理AJAX请求 提前谢谢大家,, James您可能需要使用。您的代码可

我现在得到了下面的代码,它将运行一系列ajax请求(40-50),然后再次执行它们。(本质上,他们永远都是如此)

代码:

正如你所看到的,我目前使用的超时在IE上运行得特别慢,有时在chrome上运行得很慢。当我说slow时,我的意思是所有ajax请求都将完成,然后屏幕将随着更新而刷新。IE一直都是这样,偶尔也会出现Chrome。理想情况下,我希望ajax执行它的请求,更新,然后执行下一个ajax请求

有没有更好的方法来持续处理AJAX请求

提前谢谢大家,, James

您可能需要使用。您的代码可能如下所示(当然包括
async.js
之后):

您应该根据需要调整它(
async
也可以处理错误,请阅读文档)。您说过希望它们一个接一个地启动,所以请使用
async.series
而不是
async.parallel

顺便说一句,这段代码:

$.ajax({
    async: false

纯粹的邪恶阻止其他脚本甚至整个浏览器!!!这可能就是您的“慢且闪烁”问题的原因。

不确定在您的情况下是否可行,但websocket/长轮询解决方案(如SignalR或Node.Js+Socket.IO)通常比连续轮询更有效。

您应该使用
设置超时()
而不是
设置间隔()
,并执行以下操作:

  • 如果请求失败,请执行以下操作:)
  • 如果请求成功,请使用
    setTimeout()调用

    • 我认为这是一个架构问题,而不是其他任何问题

      我建议重建结构,向服务器发送一个数组,并将响应合并到一个html页面或

      原因很明显,无论你做什么,40-50个并发ajax请求肯定会很慢,因为即使你的ajax成功处理程序(你绑定到成功的函数)在10毫秒内完成(由于它的复杂性,它肯定不会出现在IE上),40个请求意味着至少400毫秒的独占时间,导致客户端性能问题。就你而言

      async: false
      
      甚至将请求时间添加到该独占时间中,因此如果请求在10毫秒内完成(极不可能),您将使用另外400毫秒的客户端独占时间


      因此,在客户端搜索解决方案在这里不是一个真正的选项。

      请求返回的数据是什么?编辑:请求将返回一个只有一个div的小html页面。40-50?您不能将它们组合到一个请求中吗?您可以发送一个json对象数组,每个对象都有一个目标url和使用返回数据的节点id。这可以被发送到一个中央交换机,该交换机将读取url参数,获取数据,将其添加到响应数组中,然后发回整个数据。超时时间应该是多长,以使其尽可能接近实时,而不会泛洪?
      $.ajax({
          async: false
      
      async: false