javascript – NodeJS,Async forEachSeries执行顺序

前端之家收集整理的这篇文章主要介绍了javascript – NodeJS,Async forEachSeries执行顺序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
试着让我的头脑使用NodeJS的Async模块.

我有以下代码.

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

我想以打印输出的方式进行上述代码的处理

  1. 1
  2. 1 10
  3. 1 11
  4. 1 12
  5. 1 13
  6. 1 14
  7. 2
  8. 2 10
  9. 2 11
  10. 2 12
  11. 2 13
  12. 2 14
  13. 3
  14. 3 10
  15. 3 11
  16. 3 12
  17. 3 13
  18. 3 14
  19. .....

但相反,我得到了类似的东西..

  1. 1
  2. 1 10
  3. 2
  4. 2 10
  5. 1 11
  6. 3
  7. 3 10
  8. 2 11
  9. 1 12
  10. ....

我该如何解决

解决方法

完成所有操作后,forEachMethod也会接受回调.所以你的代码应该是这样的:
  1. var a1 = [1,callback_s1) {
  2. console.log(n1);
  3. var a2 = [10,callback_s2) {
  4. console.log(n1 + " " + n2);
  5. callback_s2();
  6. },function () {
  7. /* Finished the second series,now we mark the iteration of first series done */
  8. callback_s1();
  9. } );
  10. });

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

猜你在找的JavaScript相关文章