【发布时间】:2018-01-23 19:19:49
【问题描述】:
两个异步函数可以同时执行吗?例如在下面的代码中,是否有可能执行第一个 setTimeout 中的命令 let xEquals2 = x === 2;,然后执行第二个 setTimeout 中的相同命令,最后执行第一个 setTimeout 中的 if 块。或者为了让问题更简单,下面的代码是否总是打印出数字 2 两次,或者它是否有可能打印出 2 和 3 或 3 和 3?
let x = 1;
setTimeout(() => {
let xEquals2 = x === 2;
if (!xEquals2) {
x++;
}
console.log(x);
}, 1000);
setTimeout(() => {
let xEquals2 = x === 2;
if (!xEquals2) {
x++;
}
console.log(x);
}, 1000);
【问题讨论】:
-
您可以在此处阅读有关事件循环的信息。 developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop
标签: javascript node.js asynchronous parallel-processing settimeout