javascript,setTimeout定时器的精度可能不高,javascript引擎不是你想的那样

javascript引擎,它运行在宿主环境中,对前端来说,一般是web浏览器,
代码运行到浏览器。
专业术语:
事件循环:浏览器提供了一种机制来处理程序中多个块的执行,且执行每块时调用javascript引擎,这种机制被称为事件循环
特点:
1.它的运行是单线程
2.完整运行,一个好了再下一次
以下伪代码了解一下概念,(摘自《你不知道的javascript》中),根据我的理解,再加了一些说明。

// eventLoop是一个用作队列的数组// 先进, 先出   这但很重要,就是单线程的意思var eventLoop = []; // 假设数组里有很多事件在排队运行了var event;// “永远” 执行while(true) {// 一次tickif(eventLoop.length > 0) {// 拿到队列中的下一个事件event = eventLoop.shift();// 现在, 执行下一个事件try {event()}catch (err) {// 报错,进行下一步处理}}}

说明:
对每个tick而言,如果在队列中有等待事件,那么就会从队列中摘下一个事件并执行。定要清楚,setTimeout(…)并没有把你的回调函数挂在事件循环队列中。它所做的是设定一个定时器。当定时器到时后,环境会把你的回调函数放在事件循环中,这样,在未来某个时刻的tick会摘下并执行这个回调。

比如你的setTimeout,是1000毫秒后执行,也就是1秒,但是现在队列里面有有20个项目了, setTimeout函数一秒已经到了,但是得排在20个项目后面再执行,为了理解如果20项目要执行要2分钟,那setTimeout函数就是2分钟1秒执行。
所以setTimeout定时器的精度可能不高,你理解了吗

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/621336.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023 IoTDB Summit:天谋科技高级开发工程师苏宇荣《汇其流:如何用 IoTDB 流处理框架玩转端边云融合》...

12 月 3 日,2023 IoTDB 用户大会在北京成功举行,收获强烈反响。本次峰会汇集了超 20 位大咖嘉宾带来工业互联网行业、技术、应用方向的精彩议题,多位学术泰斗、企业代表、开发者,深度分享了工业物联网时序数据库 IoTDB 的技术创新…

华为手机备份全过程(保姆级问题解决方案)

手机备份 前言主体信息备份一、关闭windows安全中心的内存完整性二、开启 USB 调试,尝试使用 ADB 连接三、开始备份 微信备份QQ备份写在最后遗留问题 前言 我的手机是荣耀 20,虽然不是华为,但系统还是鸿蒙的系统(毕竟那阵荣耀还是…

.pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?

引言: 在网络安全领域,.pings勒索病毒一直是不断演变的威胁之一。其变种的不断出现使得对抗这一数字威胁变得更加复杂。本节将深入剖析.pings勒索病毒变种的出现,以更好地理解其威胁性质和对策。如果受感染的数据确实有恢复的价值与必要性&a…

reactNative0.71版本的使用

开发环境配置 参考reactNative 官网 版本选中0.71 打包配置 1. IOS 打开项目 -> 进入ios目录->执行命令 pod install ->项目名称.xcworkspace -> 使用xcode打开->配置证书 证书配置截图如下 💡tips:TARGETS目录下会有多个文件&#x…

【ArcGIS Pro微课1000例】0057:未安装所需的Microsoft驱动程序

文章目录 一、错误提示二、解决办法1. Excel转表2. Excel转csv一、错误提示 ArcGIS Pro添加Excel数据时,提示未安装所需的Microsoft驱动程序,如下图所示: 二、解决办法 1. Excel转表 在选择输入表时,可能会提示未安装所需的 Microsoft 驱动程序。 这是因为要在 ArcGIS P…

为什么光刻要用黄光

光刻是集成电路(IC或芯片)制造中的重要工艺之一。简单来说,它是通过使用光掩膜和光刻胶在基板上复制电路图案的过程。 基板将涂覆硅二氧化层绝缘层和光刻胶。光刻胶在被紫外光照射后可以容易地用显影剂溶解,然后在腐蚀后&#xf…

js pop方法的使用

JavaScript的pop()方法是数组对象的方法之一,用于从数组的末尾删除并返回最后一个元素。它不接受任何参数。 以下是pop()方法的基本语法: var lastElement array.pop() 在上述语法中: array:要操作的原始数组。lastElement&…

控制网页的灰度显示

1.代码&#xff1a; 普通网页 <style>html {filter: grayscale(100%);}</style> 或是:webkit内核浏览器写法 <style>html {-webkit-filter: grayscale(100%)}</style> 2.说明&#xff1a; grayscale(amount) :进行灰度转换。 amount转换值的大小&…

Embeddings: What they are and why they matter

embeddings 是什么意思https://simonwillison.net/2023/Oct/23/embeddings/推荐原因&#xff1a;GPT 模型的基础是一种叫做 embeddings 的技术&#xff0c;用来将文本转换成向量&#xff0c;从而可以计算出文本之间的相似度。这篇文章详细地介绍了embeddings及应用 Embeddings…

Java多线程并发篇----第十三篇

系列文章目录 文章目录 系列文章目录前言一、Semaphore 信号量二、Semaphore 与 ReentrantLock 区别三、可重入锁(递归锁)四、公平锁与非公平锁前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,…

数据库与SQL

数据库与SQL 学习链接数据库关系型数据库管理系统&#xff08;RDBMS&#xff09; SQLSQL介绍SQL类型SQL 基础语言学习创建表&#xff08;create table&#xff09;语法 数据类型SQL最常用的数据类型 学习链接 基础篇&#xff1a;数据库 SQL 入门教程 数据库 用于存储数据 存放…

对接苹果CMS芒果影视APPV1.0(附安装教程+源码支持多端)内置采集脚本

目录 概述1. 演示效果1.1 视频演示1.2 图文演示1.2.1 首页1.2.2 专题页1.2.3 搜索1.2.4 观影 2. 支持功能3. 插件和框架4. 部署方法4.1 后端4.1.1 准备工具4.1.2创建站点4.1.3 上传后端代码到服务器4.1.4 导入数据库4.1.5 配置数据库信息4.1.6访问后台管理系统 4.2 前端4.2.1 准…

【开发日记】IDEA“找不到或无法加载主类”问题

记录一个研究了两个小时的“玄学”问题找不到或无法加载主类。 ​1、问题 使用IDEA启动SpringBoot项目显示找不到或无法加载主类。 2、解决经历 尝试了很多种解决方法都没有解决&#xff0c;下面是我网上查询后尝试的一些方法。这些方法我都没有解决问题&#xff0c;是因为…

css3背景与渐变

css3背景与渐变 前言背景颜色background-color基础知识背景图片background-image基础知识背景图片的重复模式 背景尺寸background-sizecontain和cover是两个特殊的background-size的值 背景裁切 background-clip背景固定 background-attachment背景图片位置 background-positio…

Redis数据结构学习笔记

图文主要参考小林Coding的图解redis数据结构 redis为什么快 除了它是内存数据库&#xff0c;使得所有的操作都在内存上进⾏之外&#xff0c;还有⼀个重要因素&#xff0c;它实现的数据结构&#xff0c;使 得我们对数据进⾏增删查改操作时&#xff0c;Redis 能⾼效的处理。 数…

【学术精选】NLP可投的顶会信息(近期截稿)

顶级会议推荐 引言 国际学术会议是一种学术影响度较高的会议&#xff0c;它具有国际性、权威性、高知识性、高互动性等特点&#xff0c;其参会者一般为科学家、学者、教师等。具有高学历的研究人员把它作为一种科研学术的交流方式&#xff0c;能够为科研成果的发表和对科研学术…

超简单的爬虫

百度一下&#xff0c;你就知道 新闻 hao123 地图 视频 贴吧 登录 更多产品 关于百度 About Baidu ©2017 Baidu 使用百度前必读 意见反馈 京ICP证030173号 import requests from bs4 import BeautifulSoupurl https://www.baidu.com…

文心一言 VS 讯飞星火 VS chatgpt (178)-- 算法导论13.4 1题

一、用go语言&#xff0c;在执行 RB-DELETE-FIXUP 之后&#xff0c;证明&#xff1a;树根一定是黑色的。 文心一言&#xff1a; 在证明 RB-DELETE-FIXUP 之后&#xff0c;树根一定是黑色的的过程中&#xff0c;我们首先需要理解红黑树的性质。红黑树是一种自平衡二叉搜索树&a…

使用 C++/WinRT 的错误处理

本主题讨论了处理使用 C/WinRT 编程时出现的错误的策略。 更多常规信息和背景&#xff0c;请参阅错误和异常处理 (Modern C)。 避免捕获和抛出异常 建议继续编写异常安全代码&#xff0c;但最好尽量避免捕获和抛出异常。 如果没有异常处理程序&#xff0c;Windows 将自动生成错…

国密算法

一、什么是国密算法 国密算法是指中国国家密码管理局推动和标准化的密码算法体系&#xff0c;也称为“中国密码算法”或“国家密码算法”。这些算法被设计用于保护信息安全&#xff0c;涵盖了对称加密、非对称加密、哈希函数等多个领域。 国密算法的主要特点包括&#xff1a; 自…