详解 JavaScript 中的 EventtLoop(事件循环)机制

前言

  我们都知道,javascript 从诞生之日起就是一门单线程的非阻塞的脚步语言。这是由其最初的用途来决定的:与浏览器交互 。

  单线程意味着,JavaScript 代码在执行的时候,都只有一个主线程来处理所有的任务。

  而非阻塞则是当代码需要进行一项异步任务(无法立刻返回结果,需要花一定的事件才能返回的任务,如 I/O 事件)的时候,主线程会挂起这个任务,然后在异步任务返回结果的时候再根据一定的规则去执行相应的回调。

  单线程是必要的,也是 JavaScript 这门语言的基石,原因之一在其最初也是主要的执行环境---浏览器中,我们需要进行各种各样的 dom 操作。试想一下,如果 JavaScript 是多线程的,那么当两个线程同时对 dom 进行一项操作,例如一个向其添加事件,而另一个删除了这个 dom ,此时该如何处理呢?因此,为了保证不会发生类似的情景,JavaScript 选择只用一个主线程来执行代码,这样就保证了程序执行的一致性。

猜你喜欢

转载自www.cnblogs.com/yymxp/p/9037611.html