js超时调用setTimeout和间歇调用setInterval实例分析


Posted in Javascript onJanuary 28, 2015

本文实例分析了js超时调用setTimeout和间歇调用setInterval的用法。分享给大家供大家参考。具体如下:

今天看了javascript高级程序设计(第三版)一书,发现说setTimeout比setInterval更好,觉得的确如此。平时都是用setInterval多点,现在还是转一下思路了。又学习到了。分析如下:

setTimeout包含两个参数,第一个参数是要执行的代码,第二个参数是时间。
第一个参数可以是字符串也可以是函数,但是推荐使用函数而不是字符串。
使用字符串相当于eval方法。导致性能损失。

clearTimeout()

超时调用的代码都是在全局作用域中执行的,因此函数中this的值在费严格模式下指向window对象,在严格模式下是undefined

//setInval
var num = 0;

var max = 10;

var intervalId = null;
function incrementNumber(){

   num++;

   if(num == max){

      clearInterval(innervalId);

      alert('done');

   }

}
intervalId = setInterval(incrementNumber(),500);
//setTimeout 实现相同功能
var num = 0;

var max = 10;

function incrementNumber2(){

   num++;

   if(num < max){

      setTimeout(incrementNumber2,500);

   }else{

      alert('done');

   }

}

setTimeout(incrementNumber2,500);

以上对比可以发现,使用超时调用时,没有必要跟踪超时调用id,因为每次执行代码之后,如果不再设置另一次超时调用,调用就会自行停止。

一般认为,如果超时调用用来模拟间歇调用的是一种最佳模式。

在开发环境下,很少真正的间歇调用,原因是后一个间歇调用可能会在前一个间隙调用结束之前启动。

最好不要使用间歇调用。

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
JQuery操作表格(隔行着色,高亮显示,筛选数据)
Feb 23 Javascript
javascript的内存管理详解
Aug 07 Javascript
利用了jquery的ajax实现二级联互动菜单
Dec 02 Javascript
jQuery实现瀑布流的取巧做法分享
Jan 12 Javascript
简单对比分析JavaScript中的apply,call与this的使用
Dec 04 Javascript
JavaScript实现复制内容到粘贴板代码
Mar 31 Javascript
微信小程序 textarea 组件详解及简单实例
Jan 10 Javascript
JS查找英文文章中出现频率最高的单词
Mar 20 Javascript
浅析为什么a=&quot;abc&quot; 不等于 a=new String(&quot;abc&quot;)
Oct 25 Javascript
ES6扩展运算符用法实例分析
Oct 31 Javascript
详解KOA2如何手写中间件(装饰器模式)
Oct 11 Javascript
了解重排与重绘
May 29 Javascript
javascript原型链继承用法实例分析
Jan 28 #Javascript
Jquery 实现图片轮换
Jan 28 #Javascript
javascript查询字符串参数的方法
Jan 28 #Javascript
Jquery 实现弹出层插件
Jan 28 #Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
Jan 28 #Javascript
Jquery 实现table样式的设定
Jan 28 #Javascript
Jquery 实现checkbox全选方法
Jan 28 #Javascript
You might like
PHP生成便于打印的网页
2006/10/09 PHP
php正则校验用户名介绍
2008/07/19 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
初学js插入节点appendChild insertBefore使用方法
2011/07/04 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
2015/09/21 Javascript
javascript中的altKey 和 Event属性大全
2015/11/06 Javascript
通过js修改input、select默认字体颜色
2017/04/19 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
2017/11/13 jQuery
Layui表格行工具事件与数据回填方法
2019/09/13 Javascript
vue.js watch经常失效的场景与解决方案
2021/01/07 Vue.js
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
python实现指定字符串补全空格的方法
2015/04/30 Python
Python应用03 使用PyQT制作视频播放器实例
2016/12/07 Python
深入浅析Python 中 is 语法带来的误解
2019/05/07 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
英国时尚家具、家居饰品及礼品商店:Graham & Green
2016/09/15 全球购物
VIVOBAREFOOT赤脚鞋:让您的脚做自然的事情
2017/06/01 全球购物
Speedo速比涛德国官方网站:世界领先的泳装品牌
2019/08/26 全球购物
C#中有没有静态构造函数,如果有是做什么用的?
2016/06/04 面试题
Java程序员面试90题
2013/10/19 面试题
护理实习自我鉴定
2013/12/14 职场文书
学校采购员岗位职责
2014/01/02 职场文书
田径运动会开幕式及主持词
2014/03/28 职场文书
歌唱比赛策划方案
2014/06/06 职场文书
学校花圃的标语
2014/06/18 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
聘任证明怎么写
2015/03/02 职场文书
新员工入职感想
2015/08/07 职场文书
找规律教学反思
2016/02/23 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电