我对在jQuery中执行具有ajax调用的函数的方式有疑问。
考虑两个函数。
function auth() {
$.ajax({
type: "POST",
dataType: "json",
url: API_URL,
data: {....
},
success: function (response) {}
});
};
function getData() {
$.ajax({
type: "POST",
dataType: "json",
url: API_URL,
data: {....
},
success: function (response) {}
});
};
我一个接一个地调用这些函数,如下所示。
auth();
getData();
我的情况是,我只想在完成' auth ()‘之后执行getData()
,.I知道我们可以在auth的成功函数中调用getData()
。但我想知道的是,如果我一个接一个地调用,这些函数将如何执行,就像我上面显示的那样。
任何形式的帮助都将不胜感激:)谢谢。
发布于 2013-02-16 06:03:11
它们将异步执行。通过在调用中设置"async=false",可以让它们等待(同步),如果这是您想要的。
function auth() {
$.ajax({
**async: false,**
type: "POST",
dataType: "json",
url: API_URL,
data: {....
},
success: function (response) {}
});
};
function getData() {
$.ajax({
**aysnc: false,**
type: "POST",
dataType: "json",
url: API_URL,
data: {....
},
success: function (response) {}
});
};
这将使调用在进入下一个调用之前完成,但通常会在进行调用时锁定浏览器:
async (默认值: true) 类型:布尔值默认情况下,所有请求都是异步发送的(即默认情况下设置为true )。如果需要同步请求,请将此选项设置为false。跨域请求和dataType: jsonp请求不支持同步操作。请注意,同步请求可能会暂时锁定浏览器,从而在请求处于活动状态时禁用任何操作。从jQuery 1.8开始,不推荐将async: false与jqXHR ($.Deferred)一起使用;必须使用success/error/complete回调选项,而不是jqXHR对象的相应方法,如jqXHR.done()或已弃用的jqXHR.success()。
发布于 2013-02-16 04:37:21
您可以在jQuery中使用。只需返回ajax()
结果即可。
function auth() {
return $.ajax({
type: "POST",
dataType : "json",
url: API_URL,
data: { .... },
success: function (response) {
}
});
};
auth.done(getData);
这将在auth
完成时调用getData
。
https://stackoverflow.com/questions/14906959
复制相似问题