异步方法的jquery延迟
我有一个函数,在内部进行ajax调用,并具有成功和失败回调方法异步方法的jquery延迟,jquery,jquery-deferred,Jquery,Jquery Deferred,我有一个函数,在内部进行ajax调用,并具有成功和失败回调方法 function dothis() { object.getMyData(x,y,successCallback,failureCallback); } 由于getMyData是异步函数,因此该函数立即返回。现在我想让这个函数等待执行successCallback或failureCallback。如何使用延迟调用?看起来您不需要异步调用 您是否尝试进行同步调用,然后执行成功/失败功能?请澄清 谢谢 @狮子座 同步呼叫示例>
function dothis() {
object.getMyData(x,y,successCallback,failureCallback);
}
由于getMyData是异步函数,因此该函数立即返回。现在我想让这个函数等待执行successCallback或failureCallback。如何使用延迟调用?看起来您不需要异步调用 您是否尝试进行同步调用,然后执行成功/失败功能?请澄清 谢谢 @狮子座 同步呼叫示例>
$.ajax({
type: "GET",
url: remote_url,
async: false,
success : function(data) {
remote = data;
}
});
我更希望您使用$.when和$.then组合的jquery deferred。
您可以访问
您也可以在中找到相对答案。
ajax
已经返回了一个延迟的,所以您可以直接使用它。您能否更改getMyData
以返回ajax
返回的延迟数据
function getMyData() {
return ajax({
// ajax params
});
}
function dothis() {
// return deferred which comes from ajax
return object.getMyData(x,y,successCallback,failureCallback);
}
dothis().done(function(){
// do something on success
}).fail(function(){
// do something on failure
});
如果无法更改getMyData
以返回延迟的数据,则可以执行以下操作:
function dothis() {
var dfd = $.Deferred();
object.getMyData(x,y,function(){
dfd.resolve(); // success
},function(){
dfd.reject(); // fail
});
return dfd.promise();
}
dothis().done(function(){
// do something on success
}).fail(function(){
// do something on failure
});