Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 异步';每个元素都会立即打印出所有元素_Javascript_Node.js_Loops_Asynchronous_Foreach - Fatal编程技术网

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