JS中渲染分为同步任务和异步任务
- 同步任务都在主线程上执行,形成一个执行栈
- 异步任务通过回调函数来实现,通常用于处理耗时的,还有资源加载的场景
- 异步任务都会被放入**任务队列(消息队列)**中
任务队列分为两种,一种是宏任务,一种是微任务
宏任务是指,在主线程中执行的较大任务,通常包括有:
- setTimeout() 定时器
- setInterval()
- I/O操作
- script脚本的渲染等
微任务是相对较小的异步任务
- Promise的then和 catch方法
什么是事件循环机制
事件循环机制,就是,js在处理的时候
先执行执行栈中的同步任务,将异步任务放入到任务队列中
一旦执行栈中的所有同步任务执行完毕,系统就会按次序读取,检查微任务队列中是否被清空,如果还有微任务未执行,就先执行所有队列中的微任务(也就是将所有微任务压入执行栈中),然后再去执行宏任务,执行完毕当前宏任务之后,再去检查微任务队列,如此往复,直到任务队列被全部清空
因为JS是单线程的,为了防止阻塞页面,所以需要用到事件循环机制