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 相关文章推荐
JSON语法五大要素图文介绍
Dec 04 Javascript
A标签中通过href和onclick传递的this对象实现思路
Apr 19 Javascript
JQuery记住用户名密码实现下次自动登录功能
Apr 27 Javascript
Jquery日期选择datepicker插件用法实例分析
Jun 08 Javascript
微信小程序 Animation实现图片旋转动画示例
Aug 22 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
Sep 30 Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
Mar 28 Javascript
原生js实现针对Dom节点的CRUD操作示例
Aug 26 Javascript
layui实现数据表格自定义数据项
Oct 26 Javascript
Node.js API详解之 module模块用法实例分析
May 13 Javascript
详解JS函数防抖
Jun 05 Javascript
vue实现滑动解锁功能
Mar 03 Vue.js
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
ThinkPHP3.1新特性之对Ajax的支持更加完善
2014/06/19 PHP
MySql数据库查询结果用表格输出PHP代码示例
2015/03/20 PHP
使用PHP实现下载CSS文件中的图片
2015/12/06 PHP
PHP定时任务获取微信access_token的方法
2016/10/10 PHP
jquery validator 插件增加日期比较方法
2010/02/21 Javascript
input的focus方法使用
2010/03/13 Javascript
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
2013/07/17 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
js中浮点型运算BUG的解决方法说明
2014/01/06 Javascript
nodejs教程之环境安装及运行
2014/11/21 NodeJs
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
2016/05/21 Javascript
Bootstrap页面布局基础知识全面解析
2016/06/13 Javascript
JavaScript制作简易计算器(不用eval)
2017/02/05 Javascript
微信小程序实现图片上传、删除和预览功能的方法
2017/12/18 Javascript
每天学点Vue源码之vm.$mount挂载函数
2019/03/11 Javascript
微信小程序上线发布流程图文详解
2019/05/06 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
JavaScript实现点击切换验证码及校验
2021/01/10 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
[01:26]DOTA2荣耀之路2:iG,China
2018/05/24 DOTA
Python使用pickle模块实现序列化功能示例
2018/07/13 Python
在django admin详情表单显示中添加自定义控件的实现
2020/03/11 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
2020/09/03 Python
如何在存储过程中使用Loop
2016/01/05 面试题
个人实习生的自我评价
2014/02/16 职场文书
2015年招聘工作总结
2014/12/12 职场文书
村党组织公开承诺书
2015/04/30 职场文书
行政处罚听证告知书
2015/07/01 职场文书
《司马光》教学反思
2016/02/22 职场文书
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android
php双向队列实例讲解
2021/11/17 PHP
Nginx利用Logrotate实现日志分割
2022/05/20 Servers