我们先来看一个代码场景
console.log('Hi')
setTimeout(function cb1() {
console.log('cb1') // cb 即 callback
}, 5000)
console.log('Bye')
它的运行结果一定是这样的,打印顺序分别为 'Hi','Bye','cb1' 这里面有异步操作settimeout,下面我们以这个代码来看下什么是事件轮询
先看一张图

代码的执行大概是这样的
1.js代码从上往下执行,遇到同步代码直接执行,一个一个放在用CallStack中执行

2.遇到异步,会先记录下来等待时机(定时,网络请求等),如图遇到定时器,将其放在webapi中等待

3.时机一到,就将代码移动到callback queue中,例如本次代码,5s后移动到callback queue

4.如果callstack中的代码为空(即同步代码执行完),event开始工作,轮询查找call queue 如果有则移动到call stack进行执行,此时打印cb1
