jquery ajax同时只发送6个请求

时间:2016-09-15 16:52:07

标签: jquery ajax

这是我的servlet

public class TestServlet extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        LogFactory.getLog(getClass()).info(req.getParameter("number"));
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

}

现在我在浏览器中执行以下js

console.clear();
for (var i = 0; i < 12; i++) {
  $.ajax('/test', {
    data: {
      number: i
    }
  });
}

结果是:

2016-09-15 19:35:26 INFO  TestServlet:17 - 0
2016-09-15 19:35:26 INFO  TestServlet:17 - 2
2016-09-15 19:35:26 INFO  TestServlet:17 - 1
2016-09-15 19:35:26 INFO  TestServlet:17 - 3
2016-09-15 19:35:26 INFO  TestServlet:17 - 4
2016-09-15 19:35:26 INFO  TestServlet:17 - 5
2016-09-15 19:35:28 INFO  TestServlet:17 - 8
2016-09-15 19:35:28 INFO  TestServlet:17 - 6
2016-09-15 19:35:28 INFO  TestServlet:17 - 7
2016-09-15 19:35:28 INFO  TestServlet:17 - 11
2016-09-15 19:35:28 INFO  TestServlet:17 - 10
2016-09-15 19:35:28 INFO  TestServlet:17 - 9

您可以看到6个请求发生在19:35:26,其他6个请求发生在19:35:28

我使用默认的Tomcat和jquery设置。为什么会这样?有没有办法配置它?

2 个答案:

答案 0 :(得分:1)

浏览器在发送ajax请求和使用池和队列发送它们方面存在限制。

所以是的,没有规则。如果保存订单很重要,请使用async:false但它对用户界面的影响非常严重。

答案 1 :(得分:1)

浏览器一次将其限制为6个ajax请求。您可以通过将端点分离到不同的子域来欺骗它,但这有点超出了问题的范围。我不认为你可以在浏览器中做些什么来改变它。