试着让我的头脑使用NodeJS的Async模块.
我有以下代码.
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也会接受回调.所以你的代码应该是这样的:
var a1 = [1,callback_s1) { console.log(n1); var a2 = [10,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是同步的,但事实并非如此.它保证了数组将被同步处理,但函数本身是异步的.