[英]Multiple simultaneous Ajax requests are slow
如果我同时使用Ajax调用多个API,它会非常慢,似乎javascript会等到获取所有API的响应,而不是异步获取响应。
例如,/ api / test1响应通常在5秒钟内,/ api / test2响应通常在5秒钟内。
但是如果我同时打电话给他们,则需要10秒。
示例)需要10秒
$.get("/api/test1", function() {
self.responseHandler1();
});
$.get("/api/test2", function() {
self.responseHandler2();
});
因此,为了使其加载速度更快,我现在要做的是,
$.get("/api/test1", function() { // 5 sec
self.responseHandler1();
$.get("/api/test2", function() { // 5 sec
self.responseHandler2();
});
});
但是我认为有更好的方法,请告诉我。
您的密码
$.get("/api/test1", function() {
self.responseHandler1();
$.get("/api/test2", function() {
self.responseHandler2();
});
});
在获取到test1之前不会获取test2
这段代码
$.get("/api/test1", function() {
self.responseHandler1();
});
$.get("/api/test2", function() {
self.responseHandler2();
});
并行检索两个请求
和这段代码
$.when($.get("/api/test1"), $.get("/api/test2")).then(function(resp1, resp2) {
self.responseHandler1();
self.responseHandler2();
});
并行执行请求,但仅在两个请求都完成后才运行两个响应处理程序
作为测试(关于下面的问题和注释中更改的代码)
var x = Date.now();
$.get("/api/test1", function() {
self.responseHandler1();
});
console.log(x - Date.now());
$.get("/api/test2", function() {
self.responseHandler2();
});
console.log(x - Date.now());
记录到控制台的两个值应该是较小的数字(小于100)-如果不是,则您的$.get
不是异步的-我的jQuery知识很模糊,但是我认为有一种方法可以使默认请求同步,这可能是代码的某些部分完成的操作-否则,问题出在服务器上,它可能无法同时处理请求,或者服务器上正在执行的api代码正在阻止-无论哪种方式,到记录的数字很小,服务器存在问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.