2014-05-23 75 views
0

我有兩個獨立的異步函數正在運行。我也在這兩個函數上得到了預期的結果。我的代碼塊看起來是這樣的:捕獲並行運行的兩個異步函數都執行完成

asyncFunc1(arg1A, arg2A, function(result){ 
    console.log(result); 
}); 

asyncFunc2(arg1B, arg2B, function(result2){ 
    console.log(result2); 
}) 

。可以肉眼觀察到,一個函數返回早於其他結果。是否有一種方法可以捕獲當異步函數完成其執行並且result和result2都可用時的時刻?

任何幫助將非常感謝!

+0

JavaScript是單線程的,因此這兩個功能將不會在同一時間執行,如果這是你問 – Isaac

+1

@Isaac什麼都不用想,我這就是他的詢問,他只是想要一個回調會在完成後運行,但他不知道他們會完成哪個命令。 – Barmar

+1

我認爲你需要爲此使用_Promises_。 – Barmar

回答

2
var numFinished = 0; 
var bothFinished = function() 
{ 
    console.log('both functions have returned'); 
} 

asyncFunc1(arg1A, arg2A, function(result){ 
    console.log(result); 
    (++numFinished == 2) && bothFinished(); 
}); 

asyncFunc2(arg1B, arg2B, function(result2){ 
    console.log(result2); 
    (++numFinished == 2) && bothFinished(); 
}) 
+0

這是一個相當優雅的解決方案。 –

+0

wooooah!有效!謝謝@吉奧!這非常有幫助!這正是我需要的!我一直在嘗試調試近4個小時。 >。<非常感謝! – moja