【发布时间】:2016-02-06 06:49:54
【问题描述】:
我有以下代码:
function sayHiLater(){
var greeting = "Hi!";
setTimeout(function() {
console.log(greeting);
}, 3000);
console.log("Hello before hi");
}
sayHiLater();
我想更好地了解事件侦听器的工作原理, 所以在我上面的例子中,当 setTimeOut 被执行时,到底发生了什么? 我知道它创建了一个新的执行上下文,但我的问题是;执行上下文是否只是被延迟了 3 秒,这意味着执行堆栈同时移动到其他事物,并且随着 3 秒的结束,它又回到了该执行上下文,或者它只是传递给浏览器引擎匿名函数参数的某种引用,告诉它何时触发,然后立即将 setTimeOut 执行上下文从执行堆栈中弹出。或者我只是完全远离真正发生的事情。感谢您的宝贵时间。
【问题讨论】:
-
简单的实现可能是:将事件发布到事件队列中 -> 让执行者从事件队列中拉出第一个事件-> 让执行者寻找 evnet 回调(比如说,一张地图) -> 执行事件回调
-
我删除了我的答案,因为我看到这个问题可能重复:stackoverflow.com/questions/12930272/…
标签: javascript function events listener