当前位置: 首页 > news >正文

如何理解JS的异步?

JS是一门单线程的语言,这是因为它运行在浏览器的渲染主线程中,而渲染主线程只有一个。而渲染主线程承担着诸多的工作,渲染页面、解析HTML、解析CSS、计算样式、布局、处理图层、每秒把页面画60次、执行全局JS代码、执行事件处理函数、执行计时器的回调函数......都在其中运行。

如果使用同步的方式,就极有可能导致主线程产生阻塞,从而导致消息队列中的很多其他任务无法得到执行。这样一来,一方面会导致繁忙的主线程白白的消耗时间,另一方面导致页面无法及时更新,给用户造成卡死现象。

所以浏览器采用异步的方式来避免。具体做法是当某些任务发生时,比如计时器、网络、事件监听,主线程将任务交给其他线程去处理,自身立即结束任务的执行,转而执行后续代码。当其他线程完成时,将事先传递的回调函数包装成任务,加入到消息队列的末尾排列,等待主线程调度执行。

在这种异步模式下,浏览器永不阻塞,从而最大限度的保证了单线程的流畅运行。

相关文章:

  • 搜索插入位置(js实现,LeetCode:35)
  • 微信小程序文件存储和获取的详细方案
  • ⭐LeetCode周赛 Q1. 找出最大的几近缺失整数——模拟⭐
  • 网络安全之命令
  • RabbitMq--消息可靠性
  • 【病毒分析】熊猫烧香病毒分析及其查杀修复
  • <3D建模>.max文件转换为.fbx文件
  • Linux NFS/TFTP文件系统挂载
  • okhttp源码解析
  • OkHttp3 详解及开发实例—官方原版(二)
  • 【WPF】Slider滑动方法(INotifyPropertyChanged、ValueChanged )响应速度对比分析
  • Nest.js全栈开发终极实践:TypeORM+微服务+Docker构建高可用企业级应用
  • vue3学习-3(逻辑复用)
  • 边缘计算的业务种类划分
  • tcc编译器教程6 进一步学习编译gmake源代码
  • ‌Visual Studio Code(VS Code)支持的编程语言
  • C#里最快添加log4net的日志输出
  • scala的集合
  • ROS实践(二)构建Gazebo机器人模型文件urdf
  • PgSql 操作技巧
  • 宋鹍已任首都机场集团有限公司董事长、党委书记
  • 2025年新季夏粮收购量将达到2000亿斤左右
  • 述评:赖清德当局上台一年恶行累累
  • 探月工程鹊桥二号中继星取得阶段性进展
  • 河南通报部分未检疫生猪流入:立案查处,涉案猪肉被封存
  • 苏州1-4月进出口总值增长6.8%,工业机器人出口额倍增