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 相关文章推荐
getElementByIdx_x js自定义getElementById函数
Jan 24 Javascript
jquery将一个表单序列化为一个对象的方法
Jan 03 Javascript
搭建pomelo 开发环境
Jun 24 Javascript
JavaScript设计模式之单例模式实例
Sep 24 Javascript
浅谈JavaScript变量的自动转换和语句
Jun 12 Javascript
jQuery实现的简单无刷新评论功能示例
Nov 08 jQuery
详解JavaScript的BUG和错误
May 07 Javascript
Node.js中的不安全跳转如何防御详解
Oct 21 Javascript
vue中选项卡点击切换且能滑动切换功能的实现代码
Nov 25 Javascript
浅谈vuex actions和mutation的异曲同工
Dec 13 Javascript
一次让你了解全部JavaScript的作用域
Jun 24 Javascript
使用vue实现多规格选择实例(SKU)
Aug 23 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
支持php4、php5的mysql数据库操作类
2008/01/10 PHP
Yii2单元测试用法示例
2016/11/12 PHP
thinkphp分页集成实例
2017/07/24 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
因str_replace导致的注入问题总结
2019/08/08 PHP
几行代码轻松搞定jquery实现flash8类似的连接效果
2007/05/03 Javascript
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
2012/10/11 Javascript
Lazy Load 延迟加载图片的jQuery插件中文使用文档
2012/10/18 Javascript
javascript实现数字+字母验证码的简单实例
2014/02/10 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
JS版的date函数(和PHP的date函数一样)
2014/05/12 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
关于JavaScript的变量的数据类型的判断方法
2015/08/14 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
基于JS代码实现导航条弹出式悬浮菜单
2016/06/17 Javascript
js判断空对象的实例(超简单)
2016/07/26 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
2016/12/01 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
vue中各组件之间传递数据的方法示例
2017/07/27 Javascript
vue解决弹出蒙层滑动穿透问题的方法
2018/09/22 Javascript
JavaScript数组特性与实践应用深入详解
2018/12/30 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
2020/04/07 Javascript
[10:28]2018DOTA2国际邀请赛寻真——VGJ.S寻梦之路
2018/08/15 DOTA
python删除列表内容
2015/08/04 Python
python Flask实现restful api service
2017/12/04 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
pytorch加载自定义网络权重的实现
2020/01/07 Python
python实现批量命名照片
2020/06/18 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
军训的自我鉴定
2013/12/10 职场文书
酒店员工培训方案
2014/06/02 职场文书
2014年保卫工作总结
2014/12/05 职场文书