Javascript 如何在ajax响应中对多个函数使用回调
我的javascript代码加载程序隐藏有一个问题,但它应该在jax响应的最后一个阶段隐藏Javascript 如何在ajax响应中对多个函数使用回调,javascript,jquery,Javascript,Jquery,我的javascript代码加载程序隐藏有一个问题,但它应该在jax响应的最后一个阶段隐藏 function reverseGeocoding(lat,lng, callback){ var url = 'http://open.mapquestapi.com/nominatim/v1/reverse?format=json&lat=' + lat + '&lon=' +lng+' &zoom=18&addressdetails=1'; $.aja
function reverseGeocoding(lat,lng, callback){
var url = 'http://open.mapquestapi.com/nominatim/v1/reverse?format=json&lat=' + lat + '&lon=' +lng+' &zoom=18&addressdetails=1';
$.ajax({
url: url,
crossDomain:true,
success: function(response){
fn1(response,mapobject); //takes 30 seconds
fn2(response,mapobject); //takes 10 seconds
fn3(response,mapobject); //takes 30 seconds
fn4(response,mapobject); //takes 20 seconds
fn5(response,mapobject); //takes 30 seconds
fn6(response,mapobject); //takes 30 seconds
fn7(response,mapobject); //takes 40 seconds
$("#loader").show();
}
});
}
但问题是加载程序在响应到来后显示。我想在所有函数调用fn1、fn2、fn3、fn4、fn5、fn6、fn7之后显示加载程序。请帮助您可以使用,尤其是和。假设在所有函数中都执行$.ajax
请求,它们应该如下所示:
function f1() {
return $.ajax({
url: "someUrl",
success: function (data) {
console.log("f1 done")
}
});
}
此函数将返回一个承诺
,然后可以使用$将其放置在回调中。当
:
$.when(f1(), f2(), f3()).then(function () {
console.log("all done!");
});
您可以使用,尤其是和。假设在所有函数中都执行$.ajax
请求,它们应该如下所示:
function f1() {
return $.ajax({
url: "someUrl",
success: function (data) {
console.log("f1 done")
}
});
}
此函数将返回一个承诺
,然后可以使用$将其放置在回调中。当
:
$.when(f1(), f2(), f3()).then(function () {
console.log("all done!");
});
您可以使用jquery延迟对象
您可以使用jquery延迟对象
setTimeout或将自定义函数编码为每个函数都有一个回调并调用下一个函数。显然,最后调用show方法;在结尾处的fn7函数内部感谢francisco.preller的回复,但我知道我必须使用calback,但我不知道如何在多个函数complete上使用它。因此基本上,fn1、fn2等函数是异步的,您需要$('#loader')。show()要在它们全部返回后运行?@SAM这不是最佳答案我必须使用callback。设置timeout或将自定义函数编码为每个函数都有一个回调并调用下一个函数。显然,最后调用show方法;在结尾处的fn7函数内部感谢francisco.preller的回复,但我知道我必须使用calback,但我不知道如何在多个函数complete上使用它。因此基本上,fn1、fn2等函数是异步的,您需要$('#loader')。show()在他们都回来后再跑?@SAM这不是最好的回答,我必须使用callback。