【发布时间】:2015-11-06 03:29:09
【问题描述】:
function waitForThreeSeconds(){
setTimeOut(function(){
console.log('Time done');
},3000);
}
waitForThreeSeconds();
console.log('finished execution');
在上面的代码中,当调用 waitForThreeSeconds 函数时,会在 setTimeout 方法的事件队列中放置一个事件。我的问题是,当调用waitForThreeSeconds函数时,JS引擎遇到setTimeout方法时,传入setTimeout的函数表达式中的三秒定时器是否会立即启动?或者将一个事件放置在事件队列中。然后console.log("finished execution')这行代码在全局执行上下文中运行(这意味着一切都在JS文件中执行完毕)之后,三秒定时器将启动,并且传递给setTimeout的回调函数将运行.
我不确定 setTimeout 函数中的计时器何时真正启动。是在JS引擎遇到setTimeout方法时准确启动,还是在JS引擎进入事件队列处理setTimeout方法放置的事件时启动三秒定时器?
【问题讨论】:
-
当函数被调用时,它被放置在
stack的顶部,因此用你的话说,立即是对的! -
所以从技术上讲,当其余代码运行时,计时器仍在运行。对吗?
标签: javascript timer