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

JavaScript高级—— js 是单线程运行的

1、如何证明 js 执行时单线程的?

① setTimeout()的回调函数是在主线程执行的

② 定时器回调函数只有在运行栈中的代码全部执行完后才有可能执行

2、为什么 js 要用单线程模式,而不用多线程模式?

① JavaScript 的单线程,与它的用途有关

② 作为浏览器的脚本语言,JavaScript 的主要用途是与用户互动,以及操作 DOM

③ 这决定了它只能是单线程,否则会带来很多复杂的同步问题

3、代码的分类

① 初始化代码

② 回调代码

4、js 引擎执行代码的基本流程

① 先执行初始化代码:包含一些特别的代码,回调函数(异步执行)

设置定时器

绑定监听

发送 ajax 请求

② 后面在某个时刻才会执行回调代码

 

本文分享到这里,欢迎大家评论区相互讨论学习,下一篇继续分享JavaScript高级学习中的事件循环模型。


http://www.kler.cn/a/314861.html

相关文章:

  • 【秋招笔试-支持在线评测】11.13花子秋招(已改编)-三语言题解
  • 【知识科普】SPA单页应用程序介绍
  • 科技云报到:数字化转型,从不确定性到确定性的关键路径
  • 【Linux】进程池实现指南:掌控并发编程的核心
  • JDBC-Dao层模式
  • MySQL如何利用索引优化ORDER BY排序语句
  • 无人机+自组网:中继通信增强技术详解
  • 论文解读《MmAP : Multi-Modal Alignment Prompt for Cross-Domain Multi-Task Learning》
  • C#开发基础之单例模式下的集合数据,解决并发访问读写冲突的问题
  • PostgreSQL常用表操作SQL脚本整理
  • java重点学习-JVM类加载器+垃圾回收
  • 从一到无穷大 #35 Velox Parquet Reader 能力边界
  • 计算机基础知识笔记
  • 基于协同过滤+python+django+vue的音乐推荐系统
  • 鸿蒙Harmony-Next 徒手撸一个日历控件
  • Qt中样式表常用的属性名称定义
  • 利用Python与Ansible实现高效网络配置管理
  • 【Harmony】轮播图特效,持续更新中。。。。
  • Ubuntu24.04 安装ssh开启22端口及允许root用户远程登录
  • 【Flink实战】flink消费http数据并将数组展开多行
  • linux-虚拟化与容器化-虚拟化
  • 无法删除选定的端口,不支持请求【笔记】
  • Java流程控制语句——跳转语句详解:break 与 continue 有什么区别?
  • Go 并发模式:管道的妙用
  • biopython解析mmcif文件得到组装体、链、序列、原子坐标、变换矩阵等信息
  • 统信服务器操作系统【1050e版】安装手册