前言
js从诞生以来就是一门单线程的非阻塞的脚本语言,意味着js代码在执行的任何时候,都只有一个主线程来处理所有的任务,而非阻塞则是当代码需要进行一项异步任务(无法立刻返回结果,需要花一定时间才能返回的任务)的时候,主线程会挂起(pending)这个任务,然后在异步任务返回结果的时候再根据一定的规则去执行相应的回调。
单线程是必要的,因为在浏览器中,需要进行各种各样的dom操作,如果js是多线程的,那么当两个线城同时对dom进行一项操作的时候,无法正常处理。因此为了保证类似事件不发生,js选择只有一个主线程来执行代码。
https://zhuanlan.zhihu.com/p/33058983