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

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

单线程模式

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

好处

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

坏处

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

同步任务

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

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

异步任务

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

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

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

任务队列

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

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

事件循环

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

setTimeout()

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

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

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

setInterval()

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


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

相关文章:

  • 物联网AI MicroPython学习之语法 I2S音频总线接口
  • 带你用uniapp从零开发一个仿小米商场_2.创建空白项目及公共样式引入
  • Keil5个性化设置及常用快捷键
  • 基于51单片机超市快递寄存自动柜设计源程序
  • StarRocks Evolution:One Data,All Analytics
  • android ffmpeg
  • 量化交易:筹码理论的探索-筹码分布计算的实现
  • 从word复制内容到wangEditor富文本框的时候会把html标签也复制过来,如果只想实现直接复制纯文本,有什么好的实现方式
  • 深度学习第二天:RNN循环神经网络
  • 传输层协议[精选]
  • 力扣:180. 连续出现的数字(Python3)
  • SpringBoot + 通义千问 + 自定义React组件,支持EventStream数据解析!
  • gitbook制作电子书
  • 上新!2023年汉字小达人市级比赛在线模拟题增加2个刷题试卷
  • 1. git入门操作
  • 计算机网络之运输层
  • 电源控制系统架构(PCSA)之系统分区电源域
  • 为人基本操守
  • 2023年DevOps国际峰会暨BizDevOps企业峰会(DOIS北京站)-核心PPT资料下载
  • python+requests+pytest+allure自动化框架