位置: 编程技术 - 正文

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

  • 增量留抵退税会计处理
  • 进项税额加计抵减会计分录
  • 人力资源公司可以接保安业务吗
  • 社保公积金计提是本月计提下月
  • 现金日记账承前页过次页
  • 未签购销合同需不需要印花税
  • 材料成本差异借贷方向
  • 会员卡收费怎么办理
  • 简易征收的项目是否可以实行30万免税
  • 公司厨房用品专用发票怎么处理?
  • 个人工资怎么缴纳个人所得税
  • 现金流量表年报期末现金余额
  • 契税的发票开错了还可以作废吗?
  • 收据开17%的票税负因子是多少?
  • 一般纳税人的账户是基本账户吗
  • 企业在筹办期间发生的开办费计入管理费用账户
  • 补计提以前年度增值税
  • 单次劳务费税率
  • 6月份税务新政热点问题有哪些?
  • 公司不动产管理办法
  • 新办的营业执照多久可以注销
  • 预提工资是什么科目
  • 股利分配是在当期损益吗
  • 外购集体福利用交税吗
  • 领用库存商品的消费税
  • 外籍人员在境内取得所得在我国应该计征个人所得税
  • 农副产品的进项税额
  • 技术服务合同要盖骑缝章吗
  • 普通发票的进项票怎么做分录
  • 留存收益净利润之间关系
  • 华为鸿蒙harmonyos官网4.0
  • php各大框架以及实现原理
  • linux 数据类型
  • linux系统基础教程
  • PHP:curl_getinfo()的用法_cURL函数
  • 营业利润投资收益是借方还是贷方
  • 法罗群岛知乎
  • laravel框架关键技术解析
  • 红字发票什么作用
  • 微信账单可以打清单吗
  • 企业清算所得税政策
  • 申请退税怎么算
  • vue 插槽详解
  • 开源ei
  • vue-router + element-plus实现面包屑导航栏和路由标签栏
  • 金税盘白盘怎么分发发票
  • 其他应收款检查表怎么填
  • sqlserver连接数据库的方法
  • 交强险怎么报警
  • sql查询服务器硬件信息
  • 销售送客户礼物
  • 公司注销实收资本有余额怎么处理
  • 预留印鉴章是什么章
  • 其他应收款账务核销后放在哪个科目里
  • 坏账准备的会计处理方法
  • 融资租赁业务如何开展
  • 贴现法年末偿还金额
  • 法人银行贷款
  • 印花税需要计提吗2023
  • 预收账款处理
  • 企业收付实现制还是权责发生制
  • 资产负债率比率
  • 应收账款怎么记录
  • sql多条件组合查询
  • Win7系统重装后开不了机
  • winlogon是什么意思
  • win10怎么设置宽带连接上网
  • win7开始菜单中的程序图标修改了
  • win10预览版绿屏重启解决
  • cocos2d rpg
  • shell脚本读取ini文件
  • jquery css hover
  • python简单加密
  • javascript 数字类型
  • js实现的简洁二次函数
  • js解析json字符串获取key
  • Python selenium 三种等待方式解读
  • jquery的哪个方法可以绑定mouseover
  • 交通费用包括
  • 美国买东西邮寄怎么寄
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设