什么是事件循环

JS中渲染分为同步任务和异步任务

  • 同步任务都在主线程上执行,形成一个执行栈
  • 异步任务通过回调函数来实现,通常用于处理耗时的,还有资源加载的场景
    • 异步任务都会被放入**任务队列(消息队列)**中

任务队列分为两种,一种是宏任务,一种是微任务

宏任务是指,在主线程中执行的较大任务,通常包括有:

  • setTimeout() 定时器
  • setInterval()
  • I/O操作
  • script脚本的渲染等

微任务是相对较小的异步任务

  • Promise的then和 catch方法

什么是事件循环机制

事件循环机制,就是,js在处理的时候

先执行执行栈中的同步任务,将异步任务放入到任务队列中

一旦执行栈中的所有同步任务执行完毕,系统就会按次序读取,检查微任务队列中是否被清空,如果还有微任务未执行,就先执行所有队列中的微任务(也就是将所有微任务压入执行栈中),然后再去执行宏任务,执行完毕当前宏任务之后,再去检查微任务队列,如此往复,直到任务队列被全部清空

因为JS是单线程的,为了防止阻塞页面,所以需要用到事件循环机制

相关推荐
万少3 小时前
HarmonyOS 开发必会 5 种 Builder 详解
前端·harmonyos
橙序员小站5 小时前
Agent Skill 是什么?一文讲透 Agent Skill 的设计与实现
前端·后端
炫饭第一名7 小时前
速通Canvas指北🦮——基础入门篇
前端·javascript·程序员
王晓枫8 小时前
flutter接入三方库运行报错:Error running pod install
前端·flutter
符方昊8 小时前
React 19 对比 React 16 新特性解析
前端·react.js
ssshooter8 小时前
又被 Safari 差异坑了:textContent 拿到的值居然没换行?
前端
曲折8 小时前
Cesium-气象要素PNG色斑图叠加
前端·cesium
Forever7_8 小时前
Electron 淘汰!新的桌面端框架 更强大、更轻量化
前端·vue.js
Angelial8 小时前
Vue3 嵌套路由 KeepAlive:动态缓存与反向配置方案
前端·vue.js
jiayu9 小时前
Angular学习笔记24:Angular 响应式表单 FormArray 与 FormGroup 相互嵌套
前端