js是单线程运行:
h5提出Web Worker概念:用于在主线程上创建多线程(子线程)
子线程完全受主线程控制
子线程不得操作DOM
js的执行栈执行机制:
1.判断js是属于同步任务还是异步任务
2.同步任务进入js主线程优先执行,按照顺序执行
3.异步任务被挂起,执行完毕后进入任务队列等待读取
4.主线程执行完毕后触发事件循环机制读取任务队列中的执行好的任务
事件循环机制:
宏任务:setTimeout,setInterval,ajax,DOM事件
微任务:Promise,async/await
1.次循环都会先执行宏任务,然后查找是否有可执行的微任务
2.执行宏任务的微任务完毕后执行下一个宏任务
为什么微任务比宏任务执行的早:
1. 宏任务:DOM渲染后触发,如setTimeOut
2. 微任务:DOM渲染前触发,如Promise
3. 宏任务是浏览器规定的;
4. 微任务是es6语法规定的;
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。