Javascript同时处理函数?

Javascript同时处理函数?,javascript,function,Javascript,Function,因为我对Javascript不是很有经验,所以我对函数顺序有点困惑 在下面的示例中,我希望在wait()完成后处理console.log() function wait() { setTimeout(function () { console.log("wait " + new Date().getTime()); }, 3000); } wait(); console.log("global " + new Date().getTime()); 控制台显示

因为我对Javascript不是很有经验,所以我对函数顺序有点困惑

在下面的示例中,我希望在wait()完成后处理console.log()

function wait() {
    setTimeout(function () {
        console.log("wait " + new Date().getTime());
    }, 3000);
}

wait();

console.log("global " + new Date().getTime());
控制台显示这些值:

全局149993535591等待149993538592

为什么在第一个函数尚未完成之前,第二个函数正在处理中?


当我在函数内部填充数组并需要在该函数外部对其进行处理时,这会导致一些问题,因为它仍然是空的。

setTimeout是异步的,它不会在执行下一行之前等待,而是在您设置的延迟完成时执行代码。

setTimeout是非阻塞的-无论您做什么,都不要只是“使用async:false”,除非您希望用户体验在等待时只涉及“冻结”。相反,学习如何使用(链接积分)

setTimeout是非阻塞的同步代码可能很棘手JavaScript是单线程的。任何事情都不会同时发生。异步函数必须等待主线程完成后才能运行。即使在
setTimeout
上延迟为
0
,执行顺序仍然相同。请参阅关于在异步函数中填充变量。感谢快速帮助。非常感谢。