Javascript 当所有ajax都完成时,如何触发函数?
ajax请求将由用户单击启动 不可能知道将发送多少请求 我尝试了ajaxComplete,但它不起作用,我认为它在加载页面后无法检测ajaxJavascript 当所有ajax都完成时,如何触发函数?,javascript,jquery,ajax,Javascript,Jquery,Ajax,ajax请求将由用户单击启动 不可能知道将发送多少请求 我尝试了ajaxComplete,但它不起作用,我认为它在加载页面后无法检测ajax function ajax1() { $.ajax({ url: 'getCount.php', type: 'GET', dataType: 'html', success: function (data) { var count = parseInt(dat
function ajax1() {
$.ajax({
url: 'getCount.php',
type: 'GET',
dataType: 'html',
success: function (data) {
var count = parseInt(data);
for (var i = 0; i < count; i++) {
ajax2();
}
}
});
}
function ajax2() {
$.ajax({
url: 'getCount2.php',
type: 'GET',
dataType: 'html',
success: function (data) {
var count = parseInt(data);
for (var i = 0; i < count; i++) {
ajax3();
}
}
});
}
function ajax3() {
$.ajax({
url: 'ajax3.php',
type: 'GET',
dataType: 'html',
success: function (data) {
//do something
}
});
}
$(document).ajaxComplete(function (event, xhr, settings) {
alert('Complete');
});
函数ajax1(){
$.ajax({
url:'getCount.php',
键入:“GET”,
数据类型:“html”,
成功:功能(数据){
var count=parseInt(数据);
对于(变量i=0;i
我认为最有意义的方法是执行嵌套回调。这样,所有的事情都在回调中发生,在它们全部完成之前什么都不会发生。这些问题可能会有所帮助我认为最有意义的方法是进行嵌套回拨。这样,所有的事情都在回调中发生,在它们全部完成之前什么都不会发生。这些问题可能会有所帮助我认为最有意义的方法是进行嵌套回拨。这样,所有的事情都在回调中发生,在它们全部完成之前什么都不会发生。这些问题可能会有所帮助我认为最有意义的方法是进行嵌套回拨。这样,所有的事情都在回调中发生,在它们全部完成之前什么都不会发生。这些问题可能有助于更新:非常好地阅读承诺: 通常的做法是使用
$.ajax
函数返回的承诺
更改函数以返回.ajax
调用的结果:
function ajax1(..) {
return $.ajax(...)
}
然后使用$.when
在解决所有承诺后解决新承诺
$.when([ajax1(), ajax2(), ajax3()]).then(function() { alert('all complete') })
但是,在更复杂的情况下(就像您的情况一样),您需要动态存储对所有承诺的引用,并且只在添加所有承诺后调用$
例如,您可以创建承诺数组,一个用于ajax2
调用,一个用于ajax3
调用
var ajax2calls = [], ajax3calls=[]
function ajax1() {
return $.ajax({
url: 'getCount.php',
type: 'GET',
dataType: 'html',
success: function (data) {
var count = parseInt(data);
for (var i = 0; i < count; i++) {
ajax2calls.push(ajax2());
}
$.when(ajax2calls).then(function() {
$.when(ajax3calls).then(function() {
alert('all done')
}
})
}
});
}
var ajax2calls=[],ajax3calls=[]
函数ajax1(){
返回$.ajax({
url:'getCount.php',
键入:“GET”,
数据类型:“html”,
成功:功能(数据){
var count=parseInt(数据);
对于(变量i=0;i
也可以考虑使用允诺库,因为它提供了比常规承诺/A或允诺/ A+更丰富的API。检查<代码> MAP<代码>,<代码>解决< /代码>,<代码>所有< /代码>方法> < /P> < P>更新:非常好的读承诺:
通常的做法是使用$.ajax
函数返回的承诺
更改函数以返回.ajax
调用的结果:
function ajax1(..) {
return $.ajax(...)
}
然后使用$.when
在解决所有承诺后解决新承诺
$.when([ajax1(), ajax2(), ajax3()]).then(function() { alert('all complete') })
但是,在更复杂的情况下(就像您的情况一样),您需要动态存储对所有承诺的引用,并且只在添加所有承诺后调用$
例如,您可以创建承诺数组,一个用于ajax2
调用,一个用于ajax3
调用
var ajax2calls = [], ajax3calls=[]
function ajax1() {
return $.ajax({
url: 'getCount.php',
type: 'GET',
dataType: 'html',
success: function (data) {
var count = parseInt(data);
for (var i = 0; i < count; i++) {
ajax2calls.push(ajax2());
}
$.when(ajax2calls).then(function() {
$.when(ajax3calls).then(function() {
alert('all done')
}
})
}
});
}
var ajax2calls=[],ajax3calls=[]
函数ajax1(){
返回$.ajax({
url:'getCount.php',
键入:“GET”,
数据类型:“html”,
成功:功能(数据){
var count=parseInt(数据);
对于(变量i=0;i
也可以考虑使用允诺库,因为它提供了比常规承诺/A或允诺/ A+更丰富的API。检查<代码> MAP<代码>,<代码>解决< /代码>,<代码>所有< /代码>方法> < /P> < P>更新:非常好的读承诺:
通常的做法是使用$.ajax
函数返回的承诺
更改函数以返回.ajax
调用的结果:
function ajax1(..) {
return $.ajax(...)
}
然后使用$.when
在解决所有承诺后解决新承诺
$.when([ajax1(), ajax2(), ajax3()]).then(function() { alert('all complete') })
但是,在更复杂的情况下(就像您的情况一样),您需要动态存储对所有承诺的引用,并且只在添加所有承诺后调用$
例如,您可以创建承诺数组,一个用于ajax2
调用,一个用于ajax3
调用
var ajax2calls = [], ajax3calls=[]
function ajax1() {
return $.ajax({
url: 'getCount.php',
type: 'GET',
dataType: 'html',
success: function (data) {
var count = parseInt(data);
for (var i = 0; i < count; i++) {
ajax2calls.push(ajax2());
}
$.when(ajax2calls).then(function() {
$.when(ajax3calls).then(function() {
alert('all done')
}
})
}
});
}
var ajax2calls=[],ajax3calls=[]
函数ajax1(){
返回$.ajax({
url:'getCount.php',
键入:“GET”,
数据类型:“html”,
成功:功能(数据){
var count=parseInt(数据);
对于(变量i=0;i
也可以考虑使用允诺库,因为它提供了比常规承诺/A或允诺/ A+更丰富的API。检查<代码> MAP<代码>,<代码>解决< /代码>,<代码>所有< /代码>方法> < /P> < P>更新:非常好的读承诺:
通常的做法是使用$.ajax
函数返回的承诺
换尿布