NodeJS,asynchronousforEachSeries执行顺序

试图让我的头在使用NodeJS的asynchronous模块。

我有以下代码。

var a1 = [1,2,3,4,5,6,7,8]; async.forEachSeries(a1, function(n1, callback) { console.log(n1); var a2 = [10,11,12,13,14]; async.forEachSeries(a2, function(n2, callback) { console.log(n1 + " " + n2); callback(); }); callback(); }); 

我想以打印输出的方式来完成上述代码的处理

 1 1 10 1 11 1 12 1 13 1 14 2 2 10 2 11 2 12 2 13 2 14 3 3 10 3 11 3 12 3 13 3 14 ..... 

但是,我正在得到像..

 1 1 10 2 2 10 1 11 3 3 10 2 11 1 12 .... 

我该如何解决?

forEachMethod在接收到所有事情时也接受callback。 所以你的代码应该是这样的:

 var a1 = [1,2,3,4,5,6,7,8]; async.forEachSeries(a1, function(n1, callback_s1) { console.log(n1); var a2 = [10,11,12,13,14]; async.forEachSeries(a2, function(n2, callback_s2) { console.log(n1 + " " + n2); callback_s2(); }, function () { /* Finished the second series, now we mark the iteration of first series done */ callback_s1(); } ); }); 

代码中的问题是,您认为async.forEachSeries是同步的,但事实并非如此。 它保证了数组将被同步处理的事实,但函数本身是asynchronous的。