2013-11-01 40 views
-1
var func1 = function(){ console.log('function 1'); };  
var func2 = function(){ console.log('function 2'); }; 

async.series([func1, func2]); // output: function 1  
async.parallel([func1, func2]); // output : function 1 // function 2 

爲什麼在第一種情況下func2沒有被調用?異步串行和並行方法奇怪的行爲

+0

問題是什麼? – giZm0

+0

爲什麼在第一種情況下沒有調用func2? – robieee

回答

1

異步功能需要知道什麼時候該功能已經完成,這是通過next回調做:

var func1 = function(next){ console.log('function 1'); next(); };  
var func2 = function(next){ console.log('function 2'); next(); }; 

async.series([func1, func2]); // output: function 1 // function 2 
async.parallel([func1, func2]); // output : function 1 // function 2 
+0

但async.parallel()如何產生正確的輸出? (仍然沒有回調) – robieee

+0

對於並行,異步使用done()來觸發'全部完成'回調。當你看到打印語句時,在你的例子中這將失敗。完成()不需要簡單地啓動所有正在運行的函數。 –

+0

非常感謝! :-) – robieee