JavaScript作为一种基于事件驱动的脚本语言,很多书本都介绍了它的事件模型,
例如:如何去绑定事件,如何取消绑定等···
而对它的底层实现却没怎么提到!所以想问问大神们,它的底层是怎么实现的?或者有什么书本推荐?
JavaScript的事件都是在未来的某一时刻发生的,网上有些说是把事件处理函数放到一个队列里面,那是不是只有一个队列?
JavaScript作为一种基于事件驱动的脚本语言,很多书本都介绍了它的事件模型,
例如:如何去绑定事件,如何取消绑定等···
而对它的底层实现却没怎么提到!所以想问问大神们,它的底层是怎么实现的?或者有什么书本推荐?
JavaScript的事件都是在未来的某一时刻发生的,网上有些说是把事件处理函数放到一个队列里面,那是不是只有一个队列?
老问题了,简单说就是每次执行完当前的JavaScript代码之后,引擎就会检查消息队列,如果有消息的话就取出一条来,检查有没有绑定这个消息的代码,有的话就不管别的了直接去执行绑定好的代码。这段代码执行完之后就再去看消息队列,如果消息队列没有消息了,就一直等待直到有新消息到来。
至于消息的来源自然是浏览器的其他线程比如UI线程、定时器、网络模块等。
(定时器是在event loop中处理的,没有专门的定时器线程,之前说错了)。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读