是javascript";真正的平行;?

是javascript";真正的平行;?,javascript,node.js,asynchronous,parallel-processing,settimeout,Javascript,Node.js,Asynchronous,Parallel Processing,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.l

两个异步函数能否同时执行?例如,在下面的代码中,命令
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);

JavaScript使用的事件循环与其他平台的线程不同。因此,第一个回调将首先执行,然后是第二个回调,因此您的结果将是2,2。

这是否意味着一旦一个异步函数开始执行,它将不会被任何其他异步函数中断,直到它完成为止?@TheOneWhoMade对于javascript来说不是这样。@DanielA.White我猜您的意思是结果将是2,2?我试图建议编辑,但它必须至少有6个字符:)@marko是的,我很难找到您的逻辑。请注意,JavaScript是单线程的。重要的是不要混淆并发和异步。交错IO提供IO并行性,因为CPU不等待每个IO操作完成。对于CPU受限的工作,JavaScript将把您限制为1个内核@科迪格。非常感谢。