gpt4 book ai didi

javascript - 多个并发 Ajax 请求速度很慢

转载 作者:行者123 更新时间:2023-12-03 05:08:26 24 4
gpt4 key购买 nike

如果我同时使用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 代码正在执行的任何操作服务器阻塞 - 无论哪种方式,如果记录的数字很小,则服务器存在问题

关于javascript - 多个并发 Ajax 请求速度很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41928559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com