繁体   English   中英

多个同时的Ajax请求很慢

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM