2013-03-06 107 views
0

我有一個內部使ajax調用,並有成功和失敗回調方法的函數。jquery推遲異步方法

function dothis() { 
    object.getMyData(x,y,successCallback,failureCallback); 
} 

因爲getMyData是一個異步一個函數立即返回。現在我想讓函數等待,直到執行successCallback或failureCallback。如何使用延遲?

回答

0

看起來你不需要異步調用。

您是否嘗試進行同步呼叫,然後執行成功/失敗功能?請澄清。

感謝,

@leo

同步調用舉例>

$.ajax({ 
     type: "GET", 
     url: remote_url, 
     async: false, 
     success : function(data) { 
      remote = data; 
     } 
    }); 
0

我preferr你使用$。當和$。那麼jQuery的推遲的組合。

您可以訪問this

您還可以在stackoverflow找到相對的答案了。

1

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 
});