2013-05-15 106 views
0

我有一套按順序運行的函數,但第一個函數有一個異步子函數。我希望第二個最高級別的函數只能在異步函數完成後才能運行。任何想法我如何做到這一點?jquery - 在做完所有事情之後做些什麼 -

文件:

one(); 
two(); // I don't want this to run until after one()'s $.ajax success callback 

function one() { 
    doSomethingElse(); 
    $.ajax(url, {data: data}, function(){ 
     // do two(); 
    }); 
} 
+5

爲什麼不直接在$ .ajax的'success'方法中調用two()? –

+0

如果你不希望它異步運行,你也可以在你的ajax調用中加入'async:false'。 – jmiraglia

回答

1

更改您的函數返回AJAX對象的最佳選擇:

function one() { 
    doSomethingElse(); 

    return $.ajax({ 
     url: url, 
     data: data 
    }); 
} 

現在你做的事:

one().done(function() { 
    two(); 
}); 

這比把two()直接進入回調幹淨了一點。

+0

或者,增加優勢,'一()。完成(二);'。 –

0
function one() { 
    doSomethingElse(); 
    $.ajax(url, {data: data}, function(){ 
     // do two(); 
     two(); 
    }); 
} 

function two(){ 
alert("here"); 
} 
相關問題