如何确保一个任务仅在另一个任务结束后发生

时间:2014-06-17 10:14:27

标签: javascript jquery ajax jquery-deferred

请不要复制它。我处在一个大问题的中间。我正在使用包含数千行代码的javascript代码。我的问题是:

从其自己的类调用

methodA

methodA{  
    doSomething(abc, def, function(obj){  
        obj.getName();  
    });  
}  

doSomething(abc, def, callback){  
// codes....
callback(new XYZ());  
}

在XYZ类构造函数中,我使用了几个Jquery Deffered对象(带有ajax调用)。所以我的问题出在obj.getName()我收到错误this.name未定义。那么当控件进入obj.getName()函数时,如何确保整个新XYZ()执行完全结束(所有ajax调用,回调等)?

感谢

2 个答案:

答案 0 :(得分:1)

您可以使用函数回调来实现此目的。 更多可以通过jquery延迟在谷歌上搜索 作为shown here

var jqDeferred = doSomething(abc,def,function(obj){

});

jqDeferred.done(function(){
obj.getName();  
})


doSomething(abc,def,callback)
{

}

答案 1 :(得分:0)

你可以使用.when和.then => http://api.jquery.com/jquery.when/

methodA{  
    doSomething(abc, def, function(obj){  
        $.when(callback(new XYZ())).then(obj.getName());  
    });