一先接触js的大家,应该首先都会了解到javascript 是一门单线程语言,javascript是按照语句出现的顺序执行的 。那么我们为了一些页面渲染,数据获取等任务时总不能一直等待下面的任务不干活呀。
所以我们引入了一步任务。
同步任务
异步任务
同步和异步任务分别进入不同的执行"场所",同步的进入主线程,异步的进入Event Table并注册函数。
当指定的事情完成时,Event Table(事件表)会将这个函数移入Event Queue。(事件列队)
主线程内的任务执行完毕为空,会去Event Queue读取对应的函数,进入主线程执行。
上述过程会不断重复,也就是常说的Event Loop(事件循环)。
我们不禁要问了,那怎么知道主线程执行栈为空啊?js引擎存在monitoring process进程,会持续不断的检查主线程执行栈是否为空,一旦为空,就会去Event Queue那里检查是否有等待被调用的函数。









网友评论