2012-10-27 47 views
2

我有2個函數。第二個比第一個更快,這個函數如何等待完成第一個工作?等待一個函數來完成

function1(); // slow 

function2(); // fast 

回答

4

JavaScript是祈使句和單線程的,它只是工作這樣。直到function1()完成,function2()纔會啓動。

如果通過緩慢你的意思是通過AJAX異步調用一些外部服務,那麼我們正在談論。 function1()必須提供某種回調的,這樣,當異步請求完成,function2()叫做:

function1(function2); 

實現是微不足道的,例如使用jQuery:

function function1(callback) { 
    $.ajax({url: 'some-url'}).done(callback); 
} 
1

您必須使用一些AJAX請求。因此,AJAX完整的調用回調函數等之後:

function1 = new function(callback) { 
    $.ajax({...}).done(callback()); 
} 

function1(function2); 
-1

如果你的其他後調用一個函數,那麼將完成第一或者它可能是慢或快。

+1

這有什麼關係? – Prasanth

0

如果要異步調用函數,除了明顯的回調方法外,它們的排序可以基於事件框架。您可以添加一個事件偵聽器,並將函數1作爲處理函數,並在函數2中觸發該事件。

+0

@downvoter你能不能請解釋downvote留言? –

+0

不是我的倒退,我也得到-1。似乎這裏的所有答案都是downvoted,除[一](http://stackoverflow.com/a/13100082/605744)。嗯... –