计时器

在写程序的过程中,经常会用到在某个指定的时间来执行一段代码,或者让一段代码在一个周期内执行。js中常用的计时器有timeout\interval;不是很常用的requestAnimationFrame,还有基本不会用到的Immediate;

setimmediate延时执行

var immediateID = setImmediate(func, [param1, param2, …]);
immediate的作用是在浏览器完全结束当前运行的操作之后立即执行指定的函数。然而通过下图可以看到immediate除了ie根本没人带他玩;该特性是非标准的,请尽量不要使用;知道有这么个东西就结了。

setTimeout()延时执行

在javascript程序中,除了函数是调用时才执行的代码外,所有代码都是在浏览器读取代码的时候立即执行的,但是setTimeout()方法可以延迟代码的执行
语法

 setTimeout(code,delay)//code:延迟执行的js代码,可以是程序调用//delay:code代码延迟执行的时间,单位是毫秒setTimeout("console.log('hello world')",5000);//延迟五秒弹出setTimeout("sayHello()",5000);function sayHello(){console.log("hello world");}

setInterval()周期性执行

setTimeout()方法可以让代码在一定的时间延迟执行,并不能让代码反复执行,如果要让代码反复执行,就必须要使用到setInterval方法
语法

 setInterval(code,interval)//code:要周期执行的js代码,可以使程序调用//interval:code代码执行的周期时间,单位是毫秒var i = 0;setInterval("console.log(i++)",1000);//周期性执行代码

requestAnimationFrame()请求动画帧

这个api通常只用在进行动画的绘制上,他将高速浏览器我将执行一次动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画。
绘制动画当然也可以使用其他的api,如timeout(fn(),34);但timeout的缺点是当你的web页被隐藏后,仍然在执行,而animationframe则在后台标签页或者隐藏时,会被暂停调用以提升性能。

语法

 window.requestAnimationFrame(callback);//callback  下一次重绘之前更新动画帧所调用的函数(即上面所说的回调函数)。

该回调函数会被传入DOMHighResTimeStamp参数,该参数与performance.now()的返回值相同,它表示requestAnimationFrame() 开始去执行回调函数的时刻。
返回值
animationframe的ID

 var start = null;var element = document.getElementById('Parameters');element.style.position = 'absolute';function step(timestamp) {if (!start) start = timestamp;var progress = timestamp - start;element.style.left = Math.min(progress / 10, 200) + 'px';if (progress < 2000) {window.requestAnimationFrame(step);}}window.requestAnimationFrame(step);

停止计时器

停止延迟执行代码clearTimeout()
clearTimeout()方法用以清除由setTimeout()方法创建的延时执行代码。
语法

 clearTimeout(id)//id:为setTimeout()的返回值。var timeout1 = setTimeout("console.log(666)",10000);clearTimeout(timeout1);

停止周期性执行代码clearInterval()
clearInterval()方法可以清除由setInterval()方法创建的周期性执行代码
语法

 clearInterval(id)//id为setInterval()的返回值。var i=0;var stpjump=setInterval("alt()",1000);function alt(){console.log(i++);if(i>3){clearInterval(stpjump);}}

取消动画帧cancelAnimationFrame()
取消一个先前通过调用requestAnimationFrame()方法添加到队列中的动画帧请求.
语法

 window.cancelAnimationFrame(requestID);

然而兼容性…emm…还是慎重使用吧。

当然这里列举的情况都是定义了计时器名称,直接找到清除的,对于未进行命名的也可以通过id来暴力清除,当然不建议这么做;

小程序中计时器的使用

使用中本质上没有任何的区别,但是要担心的一个问题是,慎用interval(),尽量使用timeout做递归,然后加个开关进行控制,我曾在开发中遇到过一个问题;在页面onhide周期中明明注销了计时器,然而再次在show周期中打印interval会发现上一个并没有被关闭,而且又另外创建了一个新的interval;因为做的是一个运动数据统计类mp,所以会有很多计时的需求,多页面跳转几次,甚至会吧小程序甚至微信进程卡崩溃。

打字机demo

最后放一个简单的打字机效果的demo

 var str1="打南边来了个吃葡萄不吐葡萄皮的喇嘛,打北边来了一群留恋榴莲甜哑巴,吃葡萄不吐葡萄皮的喇嘛提着五斤沓唛,留恋榴莲甜的哑巴一人拿一个喇叭";var i=0;function dzj(str){if(i<str.length){console.log(str.charAt(i));i++;}else{clearInterval(t);}}var t=setInterval("dzj(str1)",34);

js计时器+打字机效果demo相关推荐

  1. 使用typed.js显示打字机效果

    仓库:https://github.com/mattboldt/typed.js 1.简介 Typed.js 是一个类型库.用于显示打字机效果. 输入任何字符串,并观察它以您设置的速度键入,退格输入的 ...

  2. 纯js实现打字机效果

    效果图 应用场景 用处不大,只是看到网上有类似的效果,写了四五十行看不懂的代码,于是尝试能不能简单的实现 html <h2 id="text-box"></h2& ...

  3. cdn加载插件和npm安装的差别_web开发:打字机效果插件Typed.js

    本文同步发表在我的个人博客中: 沧沧凉凉​www.cclliang.com 打字机效果是非常酷的文字显示效果,视觉表现极佳,而通过Typed.js可以很简单的在web开发中实现打字机效果. 1. 官网 ...

  4. php秒表计时器,JS实现可暂停秒表计时器的效果(图文详解)

    JavaScript是前端开发中必不可少的一部分,很多效果的实现离不开JS,正在学习JavaScript的小伙伴,你会用JS制作秒表计时器吗?这篇文章就和大家如何用JS实现秒表计时器的效果,并且点击按 ...

  5. html计时器可暂停,JS实现可暂停秒表计时器的效果(图文详解)

    JavaScript是前端开发中必不可少的一部分,很多效果的实现离不开JS,正在学习JavaScript的小伙伴,你会用JS制作秒表计时器吗?这篇文章就和大家如何用JS实现秒表计时器的效果,并且点击按 ...

  6. php实现打字效果,JS实现的打字机效果示例代码

    这篇文章主要介绍了JS实现的打字机效果,结合完整实例形式分析了javascript定时触发自定义函数模拟打字输出效果的相关实现技巧,需要的朋友可以参考下 本文实例讲述了JS实现的打字机效果.分享给大家 ...

  7. AEJoy —— 表达式之闪烁光标的打字机效果(二)【JS】

    效果图 打字机效果之红色闪烁的鼠标光标 一旦您知道在哪里添加表达式,为键入动画的光标添加颜色实际上是很容易的. 演示的打字机动画与闪烁的彩色光标下面 下面我创建了 4 种方法来学习这个 After E ...

  8. AEJoy —— 表达式之闪烁光标的打字机效果(一)【JS】

    效果图 前言 在任何视频和运动图形项目中,您可能需要弄清楚如何使用光标制作一个打字机文本动画.你可能会惊讶地发现,这并不像看上去那么容易.出于这个原因,我决定写这个博客,这样就没有人需要花几个小时在 ...

  9. html5 打字机效果,使用JavaScript制作打字机文本效果

    我们在看电影时经常能够看到一些炫酷的打字机效果,用于显示一些地名或剧情简介.我们在网页中也能够实现类似的效果,目前网上已经有很多打字机效果的插件,如轻量级响应式jQuery打字机特效插件和逼真的js打 ...

最新文章

  1. RNN 扫盲:循环神经网络解读及其 PyTorch 应用实现
  2. Linux查看网卡状态
  3. visual studio 阅读 linux-kernel
  4. 【BZOJ 4555】 4555: [Tjoi2016Heoi2016]求和 (NTT)
  5. baidu的服务器数据里面装的都是垃圾!
  6. Oracle入门(十三A)之Select
  7. 两种解除禁止右键、选中、复制的方法
  8. 高并发下如何保证数据的一致性
  9. Leapmotion 找到那双手和一些交互案例
  10. Hbase安装与伪分布式配置
  11. 【JSP】EL表达式和JSTL
  12. Linux运维工程师面试知识点汇总(二)
  13. PayPal支付配置
  14. android studio Available qualifiers(可用资源限定符)笔记(待完善)
  15. 【论文复现】CBAM(2018)
  16. 蛋白质二级结构预测工具psipred安装使用
  17. 面试专题-电商项目面试篇
  18. 如何找到算法的时间复杂度
  19. OneDrive无法打开登陆怎么办
  20. UVA11134_Fabled Rooks

热门文章

  1. nginx rewrite功能使用
  2. 《SDN软件定义网络从入门到精通》理论课
  3. 在游戏中学编程不好吗?8大游戏总有一个适合你吧?
  4. 进销存设计之——库存表例子
  5. 卫视实时收视率对比 | R爬虫可视化第1季
  6. 【报告分享】2020年淘宝直播数据分析报告-知瓜数据(附下载)
  7. 快速掌握Web高德地图开发
  8. 无限联盟服务器,无限乱斗刚出来,英雄联盟的服务器就“炸”了!
  9. R语言可视化——ggplot2画回归曲线
  10. 《二》微信小程序中的 WXML