【发布时间】:2021-01-21 23:57:55
【问题描述】:
我正在使用以下代码查看 JavaScript 执行是否在同步函数进入长循环时被阻塞。
function delayBySeconds(sec){
let start = now = Date.now();
while((now - start) < (sec * 1000)){
//console.log(now);
now = Date.now();
}
}
const seconds = 20;
delayBySeconds(seconds);
console.log(`${seconds} seconds passed`);
它立即打印消息,表明执行不等待被调用函数完成其循环。这是如何运作的?我的意思是如果 delayBySeconds 函数正常工作,消息如何立即打印?这只是实验性的,当然,我会用它来做一些实际的延迟是没有意义的。
【问题讨论】:
-
它在我的情况下按预期工作:jsfiddle.net/pmoyc8zw
标签: javascript asynchronous delay callstack event-loop