我有一个问题,我需要执行多个 AJAX 请求
在一页上。请求同时开始,但他们似乎在等待前任返回。
假设 page1 需要大约 3 秒来加载。第 2 页需要 2 秒才能加载。我得到的是,两者同时启动,page1 请求在 3 秒后返回。
但问题是page2请求5秒后返回。
为什么 ?我认为每个 AJAX 请求都会在它自己的线程中运行。那么为什么要排队呢?为什么第二个要等第一个响应才开始?
我如何设法发送两个请求并在每个响应到达后立即对其进行处理?
$.ajax({
type: "POST",
url: 'page1.php',
data: { }
})
.done(function( data ) {
console.log(data);
});
$.ajax({
type: "POST",
url: 'page2.php',
data: { }
})
.done(function( data ) {
console.log(data);
});
我看到很多使用这种方法的例子。
$.when(
$.get("/resource1"),
$.get("/resource2"),
$.get("/resource3")
).done(function(response1, response2, response3) {
// do things with response1, response2 and response3;
});
但据我了解,一旦所有响应返回,它将立即处理响应。
对这个有什么想法吗?
您的第一个代码示例保证在任何 AJAX 请求完成并且 CPU 空闲时运行代码free使用。做NOT忘记了 JS 引擎是单线程 and it queuesCPU 空闲时执行的任务。
如果第一个完成的 AJAX 请求 (A1) 需要 10 秒才能运行,并且在此期间第二个 AJAX 请求 (A2) 完成,则 A2 必须等待,因为 CPU 正在处理 A1 的代码。
您可以在此找到更多详细信息https://www.youtube.com/watch?v=8aGhZQkoFbQ https://www.youtube.com/watch?v=8aGhZQkoFbQ。在此视频中,Philip Roberts 介绍了事件循环在浏览器中的工作原理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)