Javascript事件循环
首先来说javascript是一个单线程语言,可以说javascript中所有的多线程都是由单线程模拟出来的。
任务分类
- 同步任务
- 异步任务
- 宏任务
- 微任务
执行顺序
-
在任务进入到任务栈中的时候会首先判断同步、异步任务
-
同步和异步任务会分别进入不同的地方,同步任务直接进入主线程,异步任务则进入到Event Table并注册函数
-
当指定的事情完成时,Event Table会将这个函数移入到Event Queue
(打个比方是setTimeout 要求五秒后执行回调函数内容 )
setTimeout(()=>{ console.log('延时五秒') },5000)
也就是在setTimeout进入到Event Table中五秒后会被Event Table移入Event Queue中
-
当主线程内的任务都执行完毕之后会去Event Queue中读取对应函数,进入主线程
-
不断重复上面的整个过程就是Event Loop了