课程名称:2周刷完100道前端优质面试真题
课程章节:第5章 前端面试技能拼图3 :知识深度 - 原理和源码
主讲老师:双越
课程内容:
今天学习的内容包括:
5-10 -浏览器和nodejs事件循环(Event Loop)有什么区别-nodejs——微任务中process.nextTick优先级最高。
课程收获:
nodejs异步
- nodejs 同样使用 ES 语法,也是单线程,也需要异步
- 异步任务也分:宏任务 + 微任务
- 但是,它的宏任务和微任务,分不同类型,也有不同优先级
console.info('start')
setImmediate(() => {
console.info('setImmediate')
})
setTimeout(() => {
console.info('timeout')
})
Promise.resolve().then(() => {
console.info('promise then')
})
process.nextTick(() => {
console.info('nextTick')
})
console.info('end')
// start end nextTick promise then timeout setImmediate
nodejs 宏任务类型和优先级 1/2
- timers - setTimeout setInterval
- I/O callbacks - 处理网络、流、TCP 的错误回调
- Idle,prepare - 闲置状态(nodejs 内部使用)
nodejs 宏任务类型和优先级 2/2
- Poll 轮循 - 执行 poll 中的 I/O 队列
- Check 检查 - 存储 setImmediate 回调
- Close callbacks - 关闭回调,如 socket.on(‘close’)
nodejs 微任务类型和优先级
- 包括:promise,async/await,process.nextTick
- 注意,process.nextTick优先级最高
nodejs event loop
- 执行同步代码
- 执行微任务(process.nextTick优先级更高)
- 按顺序执行6个类型的宏任务(每个结束时都执行当前的微任务)
答案
- 浏览器和nodejs的event loop流程基本相同
- nodejs宏任务和微任务分类型,有优先级
注意事项
- 推荐使用setImmediate代替process.nextTick
- 本文基于nodejs最新版本,nodejs低版本可能会不同
今天的 学习了 浏览器和nodejs事件循环(Event Loop)有什么区别-nodejs。知道了nodejs中也有宏任务和微任务,宏任务主要包括setTimeout、setInterval以及callbacks(处理网络、流、TCP等错误回调)等,微任务主要包括promise、async/await以及process.nextTick。
下一步就是 学习了 虚拟DOM(vdom)真的很快吗。今天学习就先到这里吧。
坚持打卡,坚持学习,未来可期,加油😀~
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦