Java教程

JavaScript是单线程吗

本文主要是介绍JavaScript是单线程吗,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

在一次面试中,被问到这个问题 =》 JavaScript是单线程吗

JS在浏览器中运行,是单线程的. 每个window只有一个JS线程. 既然是单线程的,那么在某个特定的时刻,也就应该只有特定的代码才能够被执行,并阻塞其他的代码. 但是我们明明又发现,比如JQuery的AJAX异步调用,

而我们知道,浏览器是事件驱动的(Event Driven), 浏览器中很多行为都是异步(Asynchronized)的,浏览器会创建事件并放入执行队列中. 也就是说,浏览器内部有一个事件大循环,或者说消息大循环,叫做Event Loop(事件循环), 会轮询事件队列。

所以可以理解如下:

JS引擎是单线程来处理它的任务队列的。比如JS单线程目前正在处理一个任务. 这个时候,发生了mouse click, a timer firing, or an XMLHttpRequest completing (需要JavaScript去处理鼠标点击事件,定时器触发事件, XMLHttpRequest回调触发等)。会把这些事件放入到Event Loop(事件循环)中,等JS当前任务执行完毕,才会去依次执行它们.

 

这篇关于JavaScript是单线程吗的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!