javascript - 异步的each立即打印出所有元素

标签 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 个,然后等待输入。这是为什么?我该如何解决它?

最佳答案

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

关于javascript - 异步的each立即打印出所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26027023/

相关文章:

javascript - neo4j 中表格的可视化 (spoon-neo4j)

javascript - Jquery 放一个弹出窗口,直到加载整个页面

javascript - 在 react 中,如何在获取后更新状态?

javascript - lite-server 未在/js 文件夹内提供 .js 文件 - 浏览器不请求/js 文件

java - Runnable 中的无限循环消失了?

javascript - 遍历对象列表并检查属性值

javascript - jQuery 选项卡/验证提交多个表单

javascript - 在 NestJs 中,如何根据其接口(interface)注入(inject)服务?

node.js - 请求的资源上不存在 'Access-Control-Allow-Origin' header 。因此不允许访问 Origin 'localhost:8080'

c++ - 计算输入文件中的单词添加额外的单词?