简简单单把event loop说清楚

2018-06-24 01:43:54来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

  event loop这东西,确实把我坑了一把,面试的时候被问到这个问题的时候,我是懵逼的,完全不知道怎么回答,而当我回来查到原来这个听起来如此玄乎又厉害的名字就是异步和单线程那块的知识的时候,我心情又变得很复杂,怪我,不知道它有这么个高级的名字。

  其实这玩意相当简单,首先,js是一门单线程的语言,所谓单线程,一句话就可以讲清楚---“js不能同时做两件事,只能按顺序一件一件做”。

  这个顺序就比较通俗易懂了--“先同步,后异步”,js在执行代码的时候,会从上到下执行,如果发现你是一个同步事件,那就立即执行;如果发现你是一个异步事件,对不起,不管你是延迟0秒还是10秒,只要性质上属于异步事件,都放到事件队列里去等着。等到执行栈中(也就是存放主线程中所有的同步事件的东西)的同步事件处理完成了后,主线程就开始不断地去事件队列查询有没有可以拉过来执行的事件。(注意:在同步事件刚刚处理结束的时候,如果异步队列里有延时函数,它们是同时开始计时的)。

  而这个主线程循环不断地去事件队列里取事件的过程,就叫做事件循环。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Dom属性方法

下一篇:JavaSript事件冒泡和事件捕获