2013-03-06 63 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 
});