我有一個內部使ajax調用,並有成功和失敗回調方法的函數。jquery推遲異步方法
function dothis() {
object.getMyData(x,y,successCallback,failureCallback);
}
因爲getMyData是一個異步一個函數立即返回。現在我想讓函數等待,直到執行successCallback或failureCallback。如何使用延遲?
我有一個內部使ajax調用,並有成功和失敗回調方法的函數。jquery推遲異步方法
function dothis() {
object.getMyData(x,y,successCallback,failureCallback);
}
因爲getMyData是一個異步一個函數立即返回。現在我想讓函數等待,直到執行successCallback或failureCallback。如何使用延遲?
看起來你不需要異步調用。
您是否嘗試進行同步呼叫,然後執行成功/失敗功能?請澄清。
感謝,
@leo
同步調用舉例>
$.ajax({
type: "GET",
url: remote_url,
async: false,
success : function(data) {
remote = data;
}
});
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
});