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

#Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()

单线程模式

之所以采用单线程,而不是多线程,跟历史有关系。原因是不想让浏览器变得太复杂,因为多线程需要共享资源、且有可能修改彼此的运行结果,对于一种网页脚本语言来说,太复杂了。

好处

实现起来比较简单,执行环境相对单纯

坏处

1、 只有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。
2、 常见的浏览器无响应—假死,往往就是因为某一段js代码长时间运行—比如死循环,导致整个页面卡在这个地方,其他任务无法执行。

同步任务

定义:没有被引擎难挂起、在主线程上执行的任务。
前一个任务完成,才能执行下一个任务

通俗:是按照他们在代码中出现的顺序一次执行任务

异步任务

定义:被引擎放在一边,不进入主线程、而进入任务队列的任务。
只有引擎任务某个异步任务可以执行了,该任务才会进入主线程执行。

通俗:在当前任务不被阻塞的情况下执行任务

操作流程:串行执行 / 并行执行

任务队列

定义:用来存放异步任务的队列。

包括:定时器回调、事件处理函数、Promise的异步操作等

事件循环

定义:是一种程序结构,用于处理任务队列中的任务。js运行时(浏览器)中存在一个主线程,事件循环负责不断的检查任务队列,如果任务队列中有任务,就将任务取出并执行。

setTimeout()

定义:指定某个函数或某段代码,在多少浩淼之后执行。

参数: setTimeout(callback, delay, param1, param2, …);

返回: 一个整数,表示定时器的编号,以后可以用来取消这个定时器。

setInterval()

定义: 指定某个任务每隔一段时间就执行一次,也就是无限次的定时执行

http://www.lryc.cn/news/242184.html

相关文章:

  • html table样式的设计 表格边框修饰
  • 2023年【危险化学品经营单位安全管理人员】考试内容及危险化学品经营单位安全管理人员最新解析
  • 腾讯云 小程序 SDK对象存储 COS使用记录,原生小程序写法。
  • 【uniapp】本地资源图片无法通过 WXSS 获取,可以使用网络图片,或者 base64,或者使用image标签
  • 深入了解Spring Cloud中的分布式事务解决方案
  • 安装compiler version 5
  • 关闭vscode打开的本地服务器端口
  • VUE3+Springboot实现SM2完整步骤
  • CSS-背景属性篇
  • KyLin离线安装OceanBase
  • 插件预热 | 且看安全小白如何轻松利用Goby插件快速上分
  • pytorch下载离线包的网址
  • 【docker下安装jenkins】(一)
  • 【前端】必学知识ES6 1小时学会
  • 【学生成绩管理】数据库示例数据(MySQL代码)
  • 【电子通识】什么是物料清单BOM(Bill of Material))
  • 接口自动化测试难点:数据库验证解决方案!
  • 淘宝、1688代购系统;微信代购小程序,代购系统源代码,PHP前端源码演示
  • LED驱动控制专用电路
  • 为什么 Flink 抛弃了 Scala
  • scala 实现表达式解析
  • 分布式事务seata的AT模式介绍
  • 初识Linux(1),看了这篇文章,妈妈再也不用担心我Linux找不到门了。
  • 甲烷产生及氧化
  • Javascript的form表单校验输入框
  • 大数据-之LibrA数据库系统告警处理(ALM-37003 GTM主备不同步或者GTM主备断连)
  • python每日一题——4移动0
  • CAN实验
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • 微服务实战系列之Nginx