【发布时间】:2025-12-26 13:55:05
【问题描述】:
我有一个程序,它应该执行第一行并等待两秒钟,然后执行第二行,最后执行第三行。
console.log("Before Execution...");
setTimeout(() => console.log("Between"), 2000);
console.log("After Execution...");
但是我得到的输出是这样的:
Before Execution...
After Execution...
Between
我知道这是因为setTimeout() 异步工作,但必须有办法进行真正的同步延迟。
【问题讨论】:
-
您可以将第三个console.log 放在您的setTimeout 回调
()=> {console.log("Between"); console.log("After execution");}中,不建议使用同步延迟,因为它会阻塞UI 线程,因此您的页面将冻结且无响应 -
如果您的实际代码更复杂,您可以使用 async/await 的基于 promise 的方法,如 georg 的回答所示