js是一门单线程语言,会从上往下依次执行,
首先主线程读取js代码,此时是同步环境,当主线程检测到异步操作时,会将异步代码交给其他异步线程处理,
然后继续执行主线程任务,当异步线程执行完毕,判断异步任务的类型,异步任务可分为宏任务和微任务,不同的任务进入不同的队列,等待调用,
当主线程的同步任务执行完毕之后,开始执行微任务队列的所有微任务,微任务执行完成,执行宏任务队列里面的所有宏任务,执行完成主线程询问任务队列是否还有等待的任务,如果有的话则继续进入主线程执行,以上步骤的循环重复执行就是事件轮询,
常见的宏任务:定时器,微任务:Promise