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 相关文章推荐
很多人都是用下面的js刷新站IP和PV
Sep 05 Javascript
jQuery动画效果-fadeIn fadeOut淡入浅出示例代码
Aug 28 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
Apr 28 Javascript
jQuery动态修改字体大小的方法【测试可用】
Sep 09 Javascript
深入理解JavaScript中的并行处理
Sep 22 Javascript
基于JavaScript实现数码时钟效果
Mar 30 Javascript
关于Vue.nextTick()的正确使用方法浅析
Aug 25 Javascript
element-ui 表格实现单元格可编辑的示例
Feb 26 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
May 08 Javascript
layui radio单选限制下一个radio单选的实例
Sep 03 Javascript
详解JS深拷贝与浅拷贝
Aug 04 Javascript
JS前端基于canvas给图片添加水印
Nov 11 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中自定义函数dump查看数组信息类似var_dump
2014/01/27 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
2014/08/08 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
PHP ADODB实现事务处理功能示例
2018/05/25 PHP
Prototype1.5 rc2版指南最后一篇之Position
2007/01/10 Javascript
html读出文本文件内容
2007/01/22 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
2013/05/07 Javascript
JS 按钮点击触发(兼容IE、火狐)
2013/08/07 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
微信小程序中用WebStorm使用LESS
2017/03/08 Javascript
layer.confirm取消按钮绑定事件的方法
2018/08/17 Javascript
webpack打包非模块化js的方法
2018/10/24 Javascript
vue 表单验证按钮事件交由父组件触发的方法
2018/12/17 Javascript
vue 根据选择条件显示指定参数的例子
2019/11/09 Javascript
Python脚本获取操作系统版本信息
2016/12/17 Python
Django中的Signal代码详解
2018/02/05 Python
Django重置migrations文件的方法步骤
2019/05/01 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
Python中关于浮点数的冷知识
2019/09/22 Python
Python学习笔记之函数的参数和返回值的使用
2019/11/20 Python
解决python中的幂函数、指数函数问题
2019/11/25 Python
Django全局启用登陆验证login_required的方法
2020/06/02 Python
详解如何用HTML5 Canvas API控制图片的缩放变换
2016/03/22 HTML / CSS
Eastbay官网:美国最大的运动鞋网络零售商
2016/07/27 全球购物
中国海淘族值得信赖的海淘返利网站:55海淘
2017/01/16 全球购物
《愚公移山》教学反思
2014/02/20 职场文书
春节联欢晚会主持词
2014/03/24 职场文书
保密工作责任书
2014/04/16 职场文书
县级文明单位申报材料
2014/05/23 职场文书
龙门石窟导游词
2015/02/02 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书
网络妈妈观后感
2015/06/08 职场文书
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技