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使用手册之三 CSS操作
Mar 24 Javascript
jquery 简单导航实现代码
Sep 11 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
Oct 29 Javascript
location.hash保存页面状态的技巧
Apr 28 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
Oct 24 Javascript
详解vuejs之v-for列表渲染
Jun 22 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
Jul 20 Javascript
Laravel整合Bootstrap 4的完整方案(推荐)
Jan 25 Javascript
Vue官网todoMVC示例代码
Jan 29 Javascript
ElementUI中el-tree节点的操作的实现
Feb 27 Javascript
微信小程序文章详情功能完整实例
Jun 03 Javascript
jQuery列表动态增加和删除的实现方法
Nov 05 jQuery
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
星际争霸 Starcraft 游戏介绍
2020/03/14 星际争霸
Ajax+PHP 边学边练 之二 实例
2009/11/24 PHP
深入php-fpm的两种进程管理模式详解
2013/06/03 PHP
教你如何使用php session
2013/10/28 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
简单的php+mysql聊天室实现方法(附源码)
2016/01/05 PHP
[原创]php实现数组按拼音顺序排序的方法
2017/05/03 PHP
javascript 禁止复制网页
2009/06/11 Javascript
JavaScript 序列化对象实现代码
2009/12/18 Javascript
onclick与listeners的执行先后问题详细解剖
2013/01/07 Javascript
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
jQuery使用$.ajax进行即时验证的方法
2015/12/08 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
获取url中用&amp;隔开的参数实例(分享)
2017/05/28 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
JavaScript进制转换实现方法解析
2020/01/18 Javascript
详解VUE中的插值( Interpolation)语法
2020/10/18 Javascript
Python中的__new__与__init__魔术方法理解笔记
2014/11/08 Python
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
利用Python中的mock库对Python代码进行模拟测试
2015/04/16 Python
Python中基础的socket编程实战攻略
2016/06/01 Python
python中数据爬虫requests库使用方法详解
2018/02/11 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
Python中os模块功能与用法详解
2020/02/26 Python
python文件编写好后如何实践
2020/07/07 Python
Django修改app名称和数据表迁移方案实现
2020/09/17 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
Dower & Hall官网:英国小众轻奢珠宝品牌
2019/01/31 全球购物
SQL面试题
2013/12/09 面试题
担保书范文
2019/07/09 职场文书
浅谈Python中的正则表达式
2021/06/28 Python
mysql如何能有效防止删库跑路
2021/10/05 MySQL
Linux磁盘管理方法介绍
2022/06/01 Servers