Javascript 异步';每个元素都会立即打印出所有元素
我有一个由三个对象组成的数组。它们有名称和类型属性(以及其他各种属性)。我想循环浏览它们中的每一个,并使用Javascript 异步';每个元素都会立即打印出所有元素,javascript,node.js,loops,asynchronous,foreach,Javascript,Node.js,Loops,Asynchronous,Foreach,我有一个由三个对象组成的数组。它们有名称和类型属性(以及其他各种属性)。我想循环浏览它们中的每一个,并使用readline模块获取所有它们的用户输入。下面是我用来实现这一点的javascript代码(使用async模块): (question.q是元素数组) 但是,具有类型q的所有三个my对象的输出如下: Question1Question2Question3 //input 而不是一次只做一个,每个打印出所有3个,然后等待输入。这是为什么?我如何修复它 您可以通过使用async.eachSe
readline
模块获取所有它们的用户输入。下面是我用来实现这一点的javascript代码(使用async
模块):
(question.q
是元素数组)
但是,具有类型q
的所有三个my对象的输出如下:
Question1Question2Question3 //input
而不是一次只做一个,每个
打印出所有3个,然后等待输入。这是为什么?我如何修复它 您可以通过使用async.eachSeries()
而不是async.each()
来解决此问题async.each()
并行迭代集合(您可以限制与async.eachLimit()
的并发性),而async.eachSeries()
串行迭代集合(一次一个).如果不希望出现这种行为,听起来不应该异步运行这些操作,但如果希望使用异步方式保持代码,我想您可以很容易地使用编号变量模拟锁定机制。@ShaneQful我认为异步运行这些操作是正确的?它会一直等到事情完成,然后再转到下一个,对吗?所以你想让他们一次运行一个?尝试eachSeries@kyr一次运行一个并继续运行下一个是同步行为。使用异步行为时,它们同时运行,不能保证顺序。@aembke这是可行的!我很惊讶我以前没看到。
Question1Question2Question3 //input