Javascript 一个接一个运行的Ajax并发调用
我已经编写了一个简单的网页,希望能够在其中执行并发ajax请求。我知道我可以使用.when()在jquery中执行并发ajax请求,但我的情况并非如此。我的函数如下所示:Javascript 一个接一个运行的Ajax并发调用,javascript,jquery,ajax,Javascript,Jquery,Ajax,我已经编写了一个简单的网页,希望能够在其中执行并发ajax请求。我知道我可以使用.when()在jquery中执行并发ajax请求,但我的情况并非如此。我的函数如下所示: function getData(tt, tf) { $.ajax({ url : "/extpage.php", type : "POST", async: true, data : { testt : tt, testf : tf } }) .do
function getData(tt, tf) {
$.ajax({
url : "/extpage.php",
type : "POST",
async: true,
data : {
testt : tt,
testf : tf
}
})
.done(function (toolbox) {
alert(data);
});
}
这个函数是从网页中的一个按钮调用的,我需要能够让用户随时调用这个函数(我知道浏览器可以支持的ajax请求的最大数量),而不必等待前一个ajax请求先完成,然后执行下一个请求。我希望每个电话都能被并行处理。有没有关于如何获得这些信息的线索?这就是AJAX固有的工作原理。您执行的每个调用都独立于任何其他浏览器活动(通常包括其他AJAX调用)运行
给定您拥有的函数,如果我连续调用
getData()
十次,它将启动十个独立的HTTP请求。如果它们不是同时运行的,那么服务器一次可能不会响应多个请求,当然您对此无能为力。AJAX就是这样固有地工作的。您执行的每个调用都独立于任何其他浏览器活动(通常包括其他AJAX调用)运行
给定您拥有的函数,如果我连续调用
getData()
十次,它将启动十个独立的HTTP请求。如果它们没有同时运行,那么服务器一次可能不会回答多个请求,当然您对此无能为力。我认为您可能需要修改您的问题
这个函数是从网页内的一个按钮调用的,我需要
能够让用户随时调用此函数
这是默认的AJAX行为。AJAX调用是异步的
async: true
是冗余的,true是异步的默认值
您的代码应该按照此问题中的要求执行,如果您仍然遇到问题,则问题可能在其他地方
最后一点是:
$.when()
用于对并发/异步任务排队,与您在OP中建议的相反。我认为您可能需要修改您的问题 这个函数是从网页内的一个按钮调用的,我需要 能够让用户随时调用此函数 这是默认的AJAX行为。AJAX调用是异步的
async: true
是冗余的,true是异步的默认值
您的代码应该按照此问题中的要求执行,如果您仍然遇到问题,则问题可能在其他地方
最后一点是:
$.when()
用于对并发/异步任务进行排队,与您在OP中建议的相反。JavaScript和XML JavaScript和XML您的意思是http服务器一次不响应多个请求?这绝对不是我的情况:)我发现有很多方法可以进行并发ajax调用……请记住以下几点:如果调用getData()两次,而第一个请求没有完成,那么您必须等到第一个调用完成。。。这是我的问题。。。我不会一行调用函数两次或十次,我只调用一次,等待5秒,然后再次调用,依此类推……如果调用
getData()
两次,第一个请求没有完成,你绝对不必等待第一个调用完成。这根本不是AJAX的行为方式。第二个请求将立即启动,无论是否考虑任何其他正在进行的HTTP请求。是的,第二个请求将立即启动,但只有在第一个请求完成后才会发送到服务器:)您的意思是HTTP服务器一次不响应多个请求?这绝对不是我的情况:)我发现有很多方法可以进行并发ajax调用……请记住以下几点:如果调用getData()两次,而第一个请求没有完成,那么您必须等到第一个调用完成。。。这是我的问题。。。我不会一行调用函数两次或十次,我只调用一次,等待5秒,然后再次调用,依此类推……如果调用getData()
两次,第一个请求没有完成,你绝对不必等待第一个调用完成。这根本不是AJAX的行为方式。第二个请求将立即启动,无论是否考虑任何其他正在进行的HTTP请求。是的,第二个请求将立即启动,但只有在第一个请求完成后才会发送到服务器:)