声享正努力加载中...
李奡
const now = new Date(); setTimeout(() => { console.log(666); }, 1000) while(new Date() - now < 3000) {}
1. 浏览器进程、线程
2. Event loop
3. Promise
4. async/await
1. 单进程浏览器
Browser
Render
Plugin
GPU
Render Process
2. JS引擎
1. GUI
5. http请求线程
4. 事件触发线程
3. 定时触发线程
JS为什么是单线程的
Event Loop
1. 什么是Event Loop
3. 浏览器中
4. node中
2. 宏、微任务
什么是Event loop
宏、微任务
为啥要分为宏、微任务,直接用一种不行吗
浏览器中的Event loop
1.执行整块代码script,可以理解为先把整块代码放进宏任务队列。
2. 产生宏任务放进宏任务队列微任务放进微任务队列
3. 清空微任务队列,然后取出一个宏任务
4.重复2-4
Node中的Event loop
不同点
1. 宏任务队列
2. 执行顺序
setTimeout(() => { console.log('setTimout'); }) setImmediate(() => { console.log('setImmediate'); })
Event Loop 遇上事件会发生什么
Promise
1. 24行promise
2. 真正promise实现过程需要注意的问题
3. 测试Promise
async/await
Thanks