试着让我的头脑使用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是同步的,但事实并非如此.它保证了数组将被同步处理,但函数本身是异步的.