这是我的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设置。为什么会这样?有没有办法配置它?
答案 0 :(得分:1)
浏览器在发送ajax请求和使用池和队列发送它们方面存在限制。
所以是的,没有规则。如果保存订单很重要,请使用async:false
但它对用户界面的影响非常严重。
答案 1 :(得分:1)
浏览器一次将其限制为6个ajax请求。您可以通过将端点分离到不同的子域来欺骗它,但这有点超出了问题的范围。我不认为你可以在浏览器中做些什么来改变它。