js的单线程
JavaScript 语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。
JavaScript 的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript 的主要用途是与用户互动,以及操作 DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。
所以,为了避免复杂性,从一诞生,JavaScript 就是单线程,这已经成了这门语言的核心特征,将来也不会改变。
为了利用多核 CPU 的计算能力,HTML5 提出 Web Worker 标准,允许 JavaScript 脚本创建多个线程,但是子线程完全受主线程控制,且不得操作 DOM。所以,这个新标准并没有改变 JavaScript 单线程的本质。
异步
单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。这就造成了进程的阻塞
当我们主线程遇到异步事件时,他并不会立刻执行 而是会去放进一个异步队列中,当我们所有的同步代码执行完毕时,js才会执行异步对列中的方法