所以,我有一个包含三个对象的数组。它们具有名称和类型属性(以及其他各种属性)。我想循环遍历它们并使用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个然后等待输入。为什么这样,我该如何解决?
答案 0 :(得分:2)
您可以使用async.eachSeries()
代替async.each()
来解决此问题。 async.each()
并行迭代集合(您可以使用async.eachLimit()
限制并发),而async.eachSeries()
遍历集合(一次一个)。