位置: 编程技术 - 正文

详解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设置图片大小)

  • 内部退养个人所得税政策
  • 厂部管理人员薪酬计入什么费用
  • 长期待摊费用影响什么
  • 公司开劳务发票几个点
  • 统驭科目的作用
  • 资产负债和所有者权益三要素反映企业的
  • 进项抵扣怎么操作
  • 企业外购固定资产的成本包括购买价款和相关税费
  • 收到基金计入什么科目
  • 收到车辆保险返还会计分录
  • 公司委托其他公司办理事情
  • 补缴的以前年度的税费及滞纳金用更正申报企业所得税吗
  • 减税的案例
  • 员工私人车通行费能抵进项税吗
  • 发票联丢失能用抵扣联入账吗
  • 技术转让所得减半征收计算
  • 减免税到什么时候
  • 融资租赁的房产,按收取的租金从租计征房产税
  • 个体户在银行开户
  • 预交增值税后如何处理
  • 委托加工白酒的计税依据
  • 非征期不允许上报汇总是怎么回事
  • 新版edge浏览器兼容ie
  • thinkphp i方法
  • php网站架设
  • 期货交易所返还期货公司利息
  • 材料发票可以抵税吗
  • PHP:get_meta_tags()的用法_url函数
  • 月末增值税计算公式
  • 无痛人流多少钱?
  • php 读取文本文件
  • 处置设备影响的净损益
  • 经营租出的设备要计提折旧吗
  • 已领待用物资
  • 什么是跨域以及跨境电商
  • bat开源项目
  • 2021前端校招笔试
  • iterator用法 移除对象
  • vue-router + element-plus实现面包屑导航栏和路由标签栏
  • php的urlencode
  • 租房开的发票收的税怎么做账?
  • 采购商品的运费计入成本吗
  • 结转个人承担的社保费分录
  • python 函数 global
  • sql死锁的原因及解决方法
  • 怎么连接php
  • 企业付给个人工资怎么算
  • 会计核算方式有几种
  • 资产合计数怎么算的
  • 破产企业资产拍卖后,管理人仅办理产权登记未交付房屋
  • 未分配利润可以弥补亏损吗
  • 增值税专票什么用处
  • 承兑汇票利息分录
  • 车船使用税和印花税谁交
  • 房地产企业沙盘模拟
  • 车辆检验收费
  • 取现发放劳务费怎么做账
  • 捐赠出去的固定资产需要继续折旧吗
  • 银行承兑汇票记载事项
  • 所有者权益增加额怎么计算
  • 物业服务企业管理
  • 终端运行mysql
  • mysql解压版
  • windows server 2003 sp2密钥
  • win8.1企业版激活密钥最新
  • centos如何删除bond
  • windows账户升级为管理员
  • linux 判断语句
  • win8 蓝牙
  • 微软发布Win10更新
  • windows10储存
  • android开发mvc mvp mvvm
  • jquery 插件写法
  • unity脚本编写教程
  • nodejs inspect
  • 用js实现类的方法
  • javascript怎么样
  • 深圳国税电子税务局
  • 土地交易的印花税
  • 荒野大镖客2焦煤油与贪婪怎么开启
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设