event loop(事件循环/ 事件轮询)
event loop(事件循环/ 事件轮询)
- js是单线程运行的,其异步需要基于回调来实现
- event loop 就是异步回调的实现原理
- js从前到后,逐行执行;
- 如果某一行执行报错,则停止下面代码的执行;
- 先把同步代码执行完,再执行异步
console.log('Hi')
setTimeout(function cb1(){
console.log('cb1')
},5000)
console.log('Bye')
- 同步代码一行行执行
- 遇到异步,先“记录”下,等待时机(定时、网络请求等)
- 时机到了,就移动到Callback Queue
- 如Call Stack为空(同步代码执行完了),则Event Loop开始工作
- 轮询查找 CallBack Queue,如有则移动到CallStack执行
- 继续轮询查找