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的文字自动截取(提供源代码)
Aug 09 Javascript
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
May 27 Javascript
JS中数组Array的用法示例介绍
Feb 20 Javascript
jquery的attr方法禁用表单元素禁用输入内容
Jun 23 Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
Feb 21 Javascript
JavaScript获取IP获取的是IPV6 如何校验
Jun 12 Javascript
Angular的$http与$location
Dec 26 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
Feb 15 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
Jul 11 jQuery
angular内置provider之$compileProvider详解
Sep 27 Javascript
uni-app微信小程序登录授权的实现
May 22 Javascript
抖音短视频(douyin)去水印工具的实现代码
Mar 30 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
中国收音机工业发展史
2021/03/02 无线电
PHP中的float类型使用说明
2010/07/27 PHP
PHP 之Section与Cookie使用总结
2012/09/14 PHP
php抽象类用法实例分析
2015/07/07 PHP
PHP发送AT指令实例代码
2016/05/26 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
2017/11/20 PHP
为Yahoo! UI Extensions Grid增加内置的可编辑器
2007/03/10 Javascript
小议Javascript中的this指针
2010/03/18 Javascript
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
js中的replace方法使用介绍
2013/10/28 Javascript
js浏览器本地存储store.js介绍及应用
2014/05/13 Javascript
document.forms用法示例介绍
2014/06/26 Javascript
javascript先序遍历DOM树的方法
2016/02/27 Javascript
jquery checkbox无法用attr()二次勾选问题的解决方法
2016/07/22 Javascript
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
2018/01/08 Javascript
[00:32]2018DOTA2亚洲邀请赛OpTic出场
2018/04/03 DOTA
Python多线程编程(八):使用Event实现线程间通信
2015/04/05 Python
在java中如何定义一个抽象属性示例详解
2017/08/18 Python
python ddt实现数据驱动
2018/03/14 Python
Python实现批量执行同目录下的py文件方法
2019/01/11 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
2019/11/28 Python
python多线程使用方法实例详解
2019/12/30 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
详解pandas赋值失败问题解决
2020/11/29 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
IdealFit官方网站:女性蛋白质、补充剂和运动服装
2019/03/24 全球购物
德国最大的婴儿用品网上商店:Kidsroom.de(支持中文)
2020/09/02 全球购物
英语专业推荐信
2013/11/16 职场文书
银行求职自荐信
2014/06/30 职场文书
先进个人事迹材料
2014/12/29 职场文书
护士节慰问信
2015/02/15 职场文书
售票员岗位职责
2015/02/15 职场文书
搞笑老公保证书
2015/02/26 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书