位置: 编程技术 - 正文

详解javascript高级定时器(javascriptjs)

编辑:rootadmin

推荐整理分享详解javascript高级定时器(javascriptjs),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript+,javascript高级应用,javascript高阶,javascript 高级教程,javascript 高级教程,javascript高阶,javascript高阶,javascript高手,内容如对您有帮助,希望把文章链接给更多的朋友!

setTimeout()和setInterval()可以用来创建定时器,其基本的用法这里就不再做介绍了。这里主要介绍一下javascript的代码队列。在javascript中没有任何代码是立即执行的,一旦进程空闲则尽快执行。所以说定时器中设置的时间并不代表执行时间就一定相符,而是代表代码会在指定时间间隔后加入到队列中进行等待。如果在这个时间点上,队列中没有其他东西,那么这段代码就会被执行,表面上看上去好像代码就在精确指定的时间点上执行了。所以就会产生一些问题。

重复定时器

详解javascript高级定时器(javascriptjs)

通常,我们使用setInterval方法来以相同时间间隔重复执行某段代码。但是使用该方法会有两个问题:第一个就是某些间隔会被跳过;第二个就是多个定时器的代码执行之间的间隔可能会比预期的小。 在这里,我们来举个例子:如果某个onclick事件处理程序使用setInterval设置了一个ms间隔的重复定时器,如果事件处理程序花了ms的时间完成,就会跳过一个时间间隔同时运行着一个定时器代码。 我们也可以通过下面的代码来得到结论:

每次函数执行的时候都会创建一个新的定时器,第二个setTimeout调用使用了arguments.callee来获取对当前执行的函数的引用,并为其设置另外一个定时器。这样做是为了在前一个定时器代码执行完之前,不会向队列插入新的定时器代码,确保不会有任何缺失的间隔,也保证了在下一次定时器代码执行之前,至少要等待指定的间隔,避免了连续的运行。可谓一举两得,现在主流框架中的动画一般都是这样来实现重复定时的。

函数节流

定时器不仅仅是用来定时的,也可以用来缓解浏览器的压力。浏览器中某些计算和处理要比其他的昂贵很多,比如说DOM操作,就会需要更多的内存和CPU时间,连续使用过多的DOM操作可能会导致浏览器挂起,甚至崩溃。 函数节流的基本思想就是,某些代码不可以在没有间断的情况连续重复执行。第一次调用函数,创建一个定时器,在指定的时间间隔之后运行代码。当第二次调用该函数时,它会清除前一次的定时器并设置一个。目的就是为了在执行函数的请求停止一段时间后再执行。 代码如下:

这样给用户的感觉并不会很大,确是给浏览器减少了不少的压力,函数节流也是很多框架常用的技巧之一。

标签: javascriptjs

本文链接地址:https://www.jiuchutong.com/biancheng/385514.html 转载请保留说明!

上一篇:js实现文字垂直滚动和鼠标悬停效果(js水平垂直居中怎么设置)

下一篇:javascript图片延迟加载实现方法及思路(js设置图片大小)

  • 制作费开票属于什么科目
  • 一般纳税人的进项税额计入成本吗
  • 二手车固定资产
  • 金税盘全额抵扣分录
  • 经营活动现金流增加的原因
  • 简易计税的销项税怎么处理
  • 企业所得税的征税对象包括
  • 坏账已核销
  • 核销贷款收回会计分录
  • 工资不在本公司发票报销可以吗?
  • 海关完税凭证抵扣税率
  • 成品油消费税征税
  • 认证专票税务处理怎么做?
  • 医院职工福利费使用范围和标准是多少
  • 公司没有实缴可以破产么
  • 物物交换增值税处理
  • 公司代扣代缴的保险费有哪些
  • 财务费用的冲减什么意思
  • 企业债卷利息收入是营业收入吗
  • 企业类型主要有
  • 没有营业执照哪个银行可以办理房产抵押贷款
  • deepin怎么使用
  • linux系统应对攻击的常用防御手段的描述
  • deepin怎么删除账户
  • windows商店如何切换地区
  • 工程改造怎么做账
  • php readfile
  • 购入固定资产如何折旧
  • 阿查法拉亚盆地 钓鱼
  • vuejs动态加载组件
  • jupyter用法
  • 失控发票成本转出怎么做账
  • css各种居中
  • 红冲上年度收入怎么做凭证
  • 会计在账本上怎么记账
  • 没进项票
  • 残保金滞纳金可以税前扣除吗
  • 红字发票是可以抵扣吗
  • 业务招待费报销制度及流程
  • 无形资产的摊销年限及摊销方法
  • 租金收入什么时候交房产税
  • 建筑企业的安全生产许可证由谁颁发
  • 转账支付水电费
  • 社会保险中断后还可以续保吗
  • 低预算高要求
  • 外资企业取得合法地位
  • 固定资产处置如何申报企业所得税
  • 跨两年的发票可以冲红吗
  • 发票要不回来怎么办
  • 小规模纳税人中标一般计税
  • 单位存款的种类有哪些
  • SQL Server 2012 sa用户登录错误18456的解决方法
  • 新装mysql设置密码
  • mysql 临时表
  • vista windows
  • linux ubuntu教程
  • windows的服务怎么打开
  • win8右下角
  • remupd.exe - remupd是什么进程 有什么用
  • win8网络图标不显示
  • 极限竞速中心应用程序
  • win8找不到桌面
  • ExtJS 2.0实用简明教程 之ExtJS版的Hello
  • cocos creator js ts
  • codeblocks视频教程
  • webpack 主题切换
  • 命令以管理员运行
  • perl 计算
  • opengl怎么学
  • javascript详解
  • shell获取文件内容给变量
  • core文件的作用
  • Shell脚本监控linux系统信息
  • JSONLINT:python的json数据验证库实例解析
  • android中handler机制
  • javascript基础教程pdf下载
  • 国家税务总局江西省
  • 税务纪检部门
  • 乾隆年间财政收入统计表
  • 新乡市国家税务局刘磊
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设