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

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

单线程模式

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

好处

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

坏处

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

同步任务

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

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

异步任务

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

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

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

任务队列

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

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

事件循环

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

setTimeout()

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

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

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

setInterval()

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

相关文章:

  • 【报错记录】解决使用Kotlin写的SpringBoot项目使用Aspect切面无法生效的问题
  • 【C语言】qsort的秘密
  • BrainNet Viewer绘制脑网络教程
  • 使用向日葵开机棒进行远程开机
  • Java 获取本地ip网卡信息
  • 揭秘周杰伦《最伟大的作品》MV,绝美UI配色方案竟然藏在这里
  • 通过ros系统中websocket中发送sensor_msgs::Image数据给web端显示
  • codeforces rating
  • 外部 prometheus监控k8s集群资源(pod、CPU、service、namespace、deployment等)
  • 莫托曼机器人测温程序
  • [pyqt5]PyQt5窗体背景图片拉伸填充
  • ios qt开发要点
  • 一件做起来无聊但坚持就很有意义的事情 ---- 复盘
  • 互联网摸鱼日报(2023-11-24)
  • 【高性能计算】CUDA,OpenCL,FPGA 加速,MPI
  • 分享一款快速APP功能测试工具
  • es6(二):字符串的扩展
  • Git的一些常用操作
  • javascript数组去重/查找/插入/删除
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Linux中的硬链接与软链接
  • nfs客户端进程变D,延伸linux的lock
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • React as a UI Runtime(五、列表)
  • Twitter赢在开放,三年创造奇迹
  • Vue全家桶实现一个Web App
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 删除表内多余的重复数据
  • 说说动画卡顿的解决方案
  • 问题之ssh中Host key verification failed的解决
  • 我有几个粽子,和一个故事
  • 一些css基础学习笔记
  • ionic异常记录
  • ​Linux·i2c驱动架构​
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • # C++之functional库用法整理
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #pragma pack(1)
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (八十八)VFL语言初步 - 实现布局
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (二)hibernate配置管理
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (新)网络工程师考点串讲与真题详解
  • (转)Scala的“=”符号简介
  • (转载)Google Chrome调试JS
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .gitignore文件---让git自动忽略指定文件
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • ::
  • [20170705]diff比较执行结果的内容.txt