同步任务与异步任务
异步任务:DOM事件,setTimeout,setInterval,Ajax请求
同步任务:除了异步任务的那几个,其他都是同步任务
EvenLoop:事件循环
我们知道,在js运行代码是,它是单线程的,
下面我们可以把事件循环的过程过述一下:
1,执行栈:用于执行任务代码的的,也就是js的主线程,它会先执行同步任务,若发现有异步代码,就会把异步代码放到浏览器宿主环境中执行,继续执行下面的同步代码
2,浏览器宿主:用于执行异步代码,异步任务执行完成后,会把异步任务的回调函数放入到任务队列中,等待
3,任务队列:用于存放异步任务的回调函数,当执行栈空闲时,就会依次让队列中的回调函数放入执行栈中执行
异步任务:宏任务与微任务
宏任务:整个js标签,Ajax,定时器,计时器等
微任务:promise,vue中的 $nextTick
理解:当宏任务执行时,它会先看里面有没有微任务,所有的微任务执行完后,再执行下一个宏任务