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

自助建站系统网站建设开发网站招代理

自助建站系统网站建设开发,网站招代理,属于c2c的网站有哪些,磁力为什么会出现定时器不准确呢#xff1f; 这个其实就得提到js执行机制了#xff0c;叫做事件循环Eventloop 循环机制中#xff0c;异步事件 setInterval 到时后会把回调函数放入消息队列中Event Queue#xff0c;主线程的宏任务执行完毕后依次执行消息队列的微任务#xff…为什么会出现定时器不准确呢 这个其实就得提到js执行机制了叫做事件循环Eventloop 循环机制中异步事件 setInterval 到时后会把回调函数放入消息队列中Event Queue主线程的宏任务执行完毕后依次执行消息队列的微任务等微任务执行完了在循环回来执行宏任务。并且由于消息队列中存在大量任务其他任务执行时间就会造成定时器回调函数的延迟如果不处理则会一直叠加延迟。 以下是ChatGPT给出的的一些解决JS定时器不准确问题的方法 使用精度更高的定时器使用requestAnimationFrame()代替setInterval或setTimeout因为它以常规更新率刷新屏幕并保证在用户可见的时间内绘制动画。requestAnimationFrame()是基于浏览器屏幕的重绘机制触发的可以有效避免误差的累积。 缩短定时间隔时间如果一个定时器在浏览器里表现得很不准确可能需要缩小时间间隔比如说从100毫秒改成10毫秒。 使用标准时间: 可以使用标准时间对象提供的函数如getTime、getSeconds等获取当前时间而不是使用JavaScript自带的全局变量Date来保证计时器的准确性。 避免多个计时器同时存在如果多个计时器同时存在可能会导致其他定时器的执行被延迟或丢失调用。只使用唯一一个计时器进行安排和管理。 总之实际场景中可结合具体应用场景选择相符的解决方案。 我们开发过程中也可以通过计算时差可以有效的解决。 接下来是我自己整理的方法 通过动态计算时差解决setInterval定时器不准确的问题 根据定时器最开始时间计算当前时间回调函数执行时间与开始时间的误差用期望时差减误差作为下一次任务的时间间隔 在开始执行计时器之前记录本地时间。 在计时器函数中获取当前本地时间并计算与记录的本地时间之间的时差单位为毫秒。 在计算得到的时差的基础上添加上期望的时间间隔便是下一次计时器应该触发的时间。 在定时器回调函数中采用setTimeout代替setInterval并传入计算得到的时间差作为等待时间。 let localTime new Date().getTime(); //记录本地时间 function timer() {const now new Date().getTime(); // 获取当前本地时间const timeGap now - localTime; // 计算时间差// 下一次计时器应该触发的时间const nextTickTime 1000 - (timeGap % 1000);setTimeout(() {// 在此处执行计时器的操作console.log(tick);timer(); // 递归调用实现循环}, nextTickTime); }timer(); // 启动计时器 这种方法能够避免JavaScript在处理大量任务时的卡顿和延迟保证定时器的调用的准确性。 使用 web Worker解决setInterval定时器不准确的问题 原理将定时函数作为独立线程执行 Web Worker 是运行在后台线程中的 JavaScript 脚本可以与主线程并行工作因此不会受主线程的影响。我们可以使用 Web Worker 来创建一个新的线程来处理定时器。 以下是一个简单的示例 //在 main.js 中创建 Worker const worker new Worker(worker.js);//在 worker.js 中处理定时器 let intervalId null; worker.onmessage function(event) {console.log(Received message from main script);if (event.data start) {intervalId setInterval(function() {console.log(Worker: Interval fired);postMessage(tick);}, 1000);} else if (event.data stop) {clearInterval(intervalId);intervalId null;} };在主线程中我们首先创建一个新的 Web Worker worker.js然后通过调用 onmessage 方法来监听来自 Worker 的消息。当收到 start 消息时我们在 Worker 中启动一个定时器。当收到 stop 消息时我们清除定时器。 以下是 worker.js 文件的内容 //worker.js onmessage function(event) {console.log(Received message from main script);if (event.data start) {console.log(Worker: Starting interval);intervalId setInterval(function() {console.log(Worker: Interval fired);postMessage(tick);}, 1000);} else if (event.data stop) {console.log(Worker: Stopping interval);clearInterval(intervalId);intervalId null;} };在 Worker 中我们定义了一个 onmessage 方法来监听来自主线程的消息。当收到 start 消息时我们在 Worker 中启动一个定时器当收到 stop 消息时我们清除定时器。通过调用 postMessage 方法来将消息发送回主线程。 现在可以通过向 Worker 发送 start 和 stop 消息来控制定时器的启动和停止。由于该定时器是在 Worker 线程中运行的因此它不会受到主线程的影响从而保证了定时器的准确性。
http://www.sczhlp.com/news/175347/

相关文章:

  • 做内贸的有哪些网站wordpress链接自定义结构404
  • 个人网站做淘宝客会怎样织梦做网站简单吗
  • 误给传销公司做网站算犯罪吗网站可信图标
  • 网站建设单选wix做网站步骤
  • 德州金航网站建设网页实训内容及过程
  • wordpress 站点更改广州网站制作托管
  • 免费建站软件排行榜包装设计培训
  • 学院做网站的意义镇平县建设局网站
  • 哪个网站做效果图好网站开发vsc
  • 网站品牌推广网站文章内链
  • 阿里云 网站空间免备案网站建设
  • 租服务器做网站做网站违法嘛
  • 公司宣传网站制作泰安做网站哪家好
  • 网站功能建设与栏目划分四位一体网站开发
  • 做ppt的网站叫什么软件太原建设厅官方网站
  • 2025 年最新铝镁锰板厂商口碑排行榜:实力厂家推荐及 100 万㎡工程案例与 20 年质保深度解读铝镁锰板屋面板/保温板/卷/墙面板 铝镁锰板金属屋面板
  • 2025 年国内铝板厂家最新推荐排行榜:1-7 系主流铝板企业实力测评及优选指南1060/1100/3003/3004/5052/5083/6061/6063/6082铝板厂家推荐
  • ROS 2机器人操作系统与Gazebo机器人仿真
  • 2025 年次氯酸钠发生器厂家最新推荐榜:覆盖电解法 / 食盐电解等类型,聚焦专利技术与成本优势的品牌深度解析水厂/大型/小型/食盐电解产生次氯酸钠发生器厂家推荐
  • 2025 年二氧化氯发生器厂家最新推荐排行榜:电解式设备厂家综合实力测评及优质企业选购指南电解/电解法/电解食盐/电解盐二氧化氯发生器厂家推荐
  • 个人网站免费注册长沙有哪些大型工厂
  • 贵州省公路建设有限公司网站网页打不开的两种解决方法
  • 苏州网站建设企业网站制作广州市行政区划图
  • 网站建设验收方案网站 集约化建设 汇报
  • 昆山做网站多少钱网站开发专业基础课程
  • 蘑菇头表情包制作网站pc网站的优势
  • 绿地建设集团网站上海最新事件
  • 阿里巴巴国际贸易网站推广工具创新建设资金网站
  • 网站建设模板下载企业门户网站是什么意思
  • 好的做外贸的网站如何做电商 个人