我有一个问题,需要在一个页面上执行多个AJAX请求。这些请求同时开始,但似乎都在等待它们的前任返回。
比方说,页面1需要大约3秒钟来加载,而页面2需要2秒钟才能加载。我得到的结果是它们同时开始,而页面1的请求在3秒后返回。
但问题是,页面2的请求在5秒后才返回。为什么会这样?我认为每个AJAX请求都将在自己的线程中运行。那么为什么会排队呢?为什么第二个请求要等到第一个请求响应之后才开始?
我该如何管理发送两个请求并尽快处理每个响应?
我看到很多使用这种方法的例子。
但据我所知,它会在所有响应返回后立即处理这些响应。对此有什么想法吗?
比方说,页面1需要大约3秒钟来加载,而页面2需要2秒钟才能加载。我得到的结果是它们同时开始,而页面1的请求在3秒后返回。
但问题是,页面2的请求在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;
});
但据我所知,它会在所有响应返回后立即处理这些响应。对此有什么想法吗?
async:true
。如果你设置了 async: true,那么该语句将开始执行,并且下一条语句将被调用,无论异步语句是否已经完成。 - Manoz