【发布时间】:2018-11-28 21:09:09
【问题描述】:
我正在构建一些 Node.js 应用程序并具有这样的功能:
function ex() {
allowUA = false;
for (var i = 0; i < arr.length; i++) {
(function(index) {
setTimeout(() => {
console.log(index);
}, i * 3000);
})(i);
}
if (i == arr.length - 1) {
allowUA = true;
}
}
我想要的只是该函数以严格的顺序执行(将变量更改为 false,执行循环,然后将变量更改回 true)
我发现这并不像看起来那么容易,所以我请求你的帮助。
有没有办法做到这一点?提前致谢。
【问题讨论】:
-
一种方法是去掉
setTimeout -
@Sushanth——不可能。这里很关键。上面的只是一个例子。我希望你不是说这是唯一可能的解决方案......
-
思考一下 JavaScript 是如何运行这段代码的。它将非常快速地运行
for循环,并且每个setTimeout将几乎同时运行。您的变量i将到达循环的末尾,并且您设置的条件将评估为真毫秒,远在超时终止之前。那么,在将此值设置为 true 之前,您希望您的函数做什么?了解这一点可以帮助我们为您提供建议。
标签: javascript node.js loops asynchronous intervals