杂谈javascript 的执行机制

一先接触js的大家,应该首先都会了解到javascript 是一门单线程语言,javascript是按照语句出现的顺序执行的 。那么我们为了一些页面渲染,数据获取等任务时总不能一直等待下面的任务不干活呀。

所以我们引入了一步任务。

同步任务

异步任务


同步和异步任务分别进入不同的执行"场所",同步的进入主线程,异步的进入Event Table并注册函数。

当指定的事情完成时,Event Table(事件表)会将这个函数移入Event Queue。(事件列队)

主线程内的任务执行完毕为空,会去Event Queue读取对应的函数,进入主线程执行。

上述过程会不断重复,也就是常说的Event Loop(事件循环)。

我们不禁要问了,那怎么知道主线程执行栈为空啊?js引擎存在monitoring process进程,会持续不断的检查主线程执行栈是否为空,一旦为空,就会去Event Queue那里检查是否有等待被调用的函数。

你可能感兴趣的:(杂谈javascript 的执行机制)