Async会立即打印出所有元素

时间:2014-09-24 21:42:26

标签: javascript node.js loops asynchronous foreach

所以,我有一个包含三个对象的数组。它们具有名称和类型属性(以及其他各种属性)。我想循环遍历它们并使用readline模块获取所有这些模块的用户输入。这是我用来执行此操作的javascript代码(使用async模块):

async.each(questions.q, function (e, cb) {
  if (e.type === "s") {
    //not important
  } else if (e.type === "q") {
    rl.question(e.name, function (a) {
      //do stuff
      cb();
    });
  }
}, function (err) {
  if (err) throw err;
});

question.q是元素数组)

但是,使用type q的所有三个对象的输出如下:

Question1Question2Question3 //input

不是一次只做一个,each打印所有3个然后等待输入。为什么这样,我该如何解决?

1 个答案:

答案 0 :(得分:2)

您可以使用async.eachSeries()代替async.each()来解决此问题。 async.each()并行迭代集合(您可以使用async.eachLimit()限制并发),而async.eachSeries()遍历集合(一次一个)。