前言
  • 某日,在前台js中有一个倒计时发短信的需求,一次发送后,间隔60s才能继续发送,在页面调试的时候发现出现 Deferred long-running timer task(s) to improve scrolling smoothness. See crbug.com/574343. 这个警告,搜集资料后这里简单记录一下
不规范重现
  • 以下代码导致
timer();var i = 60;
function timer(){i--;...$("#text").html(i+"s 后重新发送");setTimeout("timer();",1000);
}
分析
  • 诈一看 肯能觉得没什么问题,timeout只执行一次,这里在函数体中再次调用timer函数 形成递归的形式,当时任然存在致命问题

    • 首先是 每次timer函数的执行都会 新开一个定时器,无论是对资源的消耗还是。。都是很大
    • 其次 递归新开的定时器并没有关闭, 这就造成了浏览器的警告,而浏览器的处理方式是延长定时器的执行任务时间,也就是说原本1秒执行一次的任务可能会被延后执行,因为在此期间要保证用户的点击、滑动等操作能够顺利执行
解决办法
  • 可以采用setInterval 来实现,也可以采用timeout +函数递归,都只开一个定时器
var task;
function timer(){i--;...if(i==0 && task!=null){/*有清除定时器的操作*/clearTimeout(task);}$("#text").html(i+"s 后重新发送");
}task = setTimeout("timer();",1000);
参考

stackoverflow的案例

记录js定时器产生 Deferred long-running timer task(s) to improve scrolling smoothness相关推荐

  1. 的setinterval函数_Vue定时器与JS 定时器 setInterval() 和 setTimeout()

    H5前端开发社区专注更多编程教程和电子书天天在用钱在vue中,有两套定时器,一套是浏览器API,window对象上的:另一套就是vue/nodejs封装的,需要引入 import { setInter ...

  2. ajax定时器怎么写,js定时器怎么写?就是在特定时间执行某段程序

    js定时器怎么写?就是在特定时间执行某段程序 复制代码 代码如下: $(function(){ var handler = function(){ } var timer = setInterval( ...

  3. 深入浅出JS定时器:从setTimeout到setInterval

    前言 当谈到 JavaScript 编程语言最基本的概念时,定时器就是一个必须掌握的知识点.在编写网站时,你经常会遇到需要在一定时间间隔内执行一些代码的情况.这时候,JavaScript 定时器就可以 ...

  4. js定时器setTimeout和setInterval用法及区别,清除定时器的使用

    setTimeout和setInterval使用方法 定时器两个参数,第一个是执行代码,第二个是执行时间.执行时间自己随便设置,执行代码有以下几种方式传入: 1.匿名函数形式传入 setTimeout ...

  5. Vue进阶(七十八):Vue 定时器与 JS 定时器

    文章目录 一.Vue 定时器 二.JS 定时器 一.Vue 定时器 在vue中,有两种定时器,一是浏览器API,window对象上的:另一种就是vue/nodejs封装的,需要引入. import { ...

  6. 9_js 日期对象Date()、js定时器、获取窗口属性、获取dom尺寸、脚本化css

    日期对象Date() 封装函数,打印当前是何年何月何日何时,几分几秒 直接看w3c上的介绍吧 https://www.w3school.com.cn/js/jsref_obj_date.asp js定 ...

  7. JS定时器使用、关闭

    创建定时器 JS定时器有两种,分别是setTimeout和setInterval,区别是前者是执行一次,后者是循环执行,具体代码如下. //指定时间为6000毫秒,即6s,到达6s后,执行一次,之后不 ...

  8. js定时器与数码时钟案例(源码及备注)

    js定时器与数码时钟案例 开启定时器 1.setInterval 间隔型 setInterval(参数一,参数二); 第一个参数是一个函数,第二个参数是时间(单位是毫秒) 意思就是每隔多长时间执行一次 ...

  9. js 定时器(setTimeout/setInterval)出现变量未定义(xxx is not defined) 的解决方法

    js 定时器(setTimeout/setInterval)出现变量未定义(xxx is not defined) 的解决方法 参考文章: (1)js 定时器(setTimeout/setInterv ...

最新文章

  1. Java 定义字符串数组
  2. 第六章 深度学习(上)
  3. PHP垃圾回收深入理解
  4. git bash上传大文件到github
  5. Metal日记:使用步骤指南
  6. Linux下性能测量和调试诊断工具Systemtap
  7. argo 现水下永动机器人_水下永动机器人现身
  8. 【模糊滑模】基于模糊切换增益调节的滑模控制
  9. 洛谷P2870 [USACO07DEC]最佳牛线,黄金Best Cow Line, Gold
  10. Cesium:鼠标监听事件绑定
  11. Codeforces 627D Preorder Test(二分+树形DP)
  12. Android 开发神器系列(工具篇)之 Android 屏幕共享工具
  13. 华为密盒M310最新固件-精简美化版
  14. php混淆解密,php混淆加密解密实战
  15. 第一百二十一天 : varnish
  16. Missing Values(缺失值)
  17. “~i“在C语言的for循环中是什么意思
  18. 干货 | 携程机票Sketch插件开发实践
  19. tp5 操作web3
  20. 使用libCurl进行百度图片翻译一直返回invalid_sign错误

热门文章

  1. 用快递100企业版接口(API)实现快递查询-Python
  2. BI项目实施为什么成功率那么低
  3. 倒谱基音周期matlab,Matlab基于倒谱和EMD的语音基音周期的提取.doc
  4. 计算机专业杭州申请公租房有,2018年第四批公租房配租方案及参加摇号名单出炉!报名状况查询方式在此!...
  5. Hadoop2.6.5安装部署及环境变量配置
  6. NXP i.MX 8M Mini处理器
  7. 2_竞赛无人机基础飞行控制函数——零基础学习竞赛无人机搭积木式编程
  8. 深度了解自监督学习,就看这篇解读 !何恺明新作MAE:通向CV大模型
  9. kill和kill -9
  10. 6、学习大数据笔记-hdfs读写代码