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 相关文章推荐
网页里控制图片大小的相关代码
Jun 13 Javascript
javascript高级学习笔记整理
Aug 14 Javascript
用jquery实现点击栏目背景色改变
Dec 10 Javascript
分享Javascript中最常用的55个经典小技巧
Nov 29 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
May 24 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
Aug 02 Javascript
js实现简单的网页换肤效果
Jan 18 Javascript
详解.vue文件中监听input输入事件(oninput)
Sep 19 Javascript
Vue登录注册并保持登录状态的方法
Aug 17 Javascript
React router动态加载组件之适配器模式的应用详解
Sep 12 Javascript
vue计算属性get和set用法示例
Feb 08 Javascript
微信小程序实现联动选择器
Feb 15 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
解析百度搜索结果link?url=参数分析 (全)
2012/10/09 PHP
PHP笔记之:基于面向对象设计的详解
2013/05/14 PHP
PHP判断图片格式的七种方法小结
2013/06/03 PHP
解析thinkphp基本配置 convention.php
2013/06/18 PHP
php使用curl存储cookie的示例
2014/03/31 PHP
php数组中删除元素之重新索引的方法
2014/09/16 PHP
PHP反射API示例分享
2016/10/08 PHP
JSON语法五大要素图文介绍
2012/12/04 Javascript
采用call方式实现js继承
2014/05/20 Javascript
js实现拉幕效果的广告代码
2015/09/02 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
使用Vue做一个简单的todo应用的三种方式的示例代码
2018/10/20 Javascript
js getBoundingClientRect使用方法详解
2019/07/17 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
Vuex,iView UI面包屑导航使用扩展详解
2019/11/04 Javascript
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
基于python实现在excel中读取与生成随机数写入excel中
2018/01/04 Python
djang常用查询SQL语句的使用代码
2019/02/15 Python
Python字符串的常见操作实例小结
2019/04/08 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
2020/04/20 Python
美国电视购物HSN官网:HSN
2016/09/07 全球购物
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
描述内存分配方式以及它们的区别
2016/10/15 面试题
函授大专自我鉴定
2013/11/01 职场文书
秋季婚礼证婚词
2014/01/11 职场文书
优秀企业获奖感言
2014/02/01 职场文书
小学英语教学反思案例
2014/02/04 职场文书
小学生操行评语
2014/04/22 职场文书
高中生第一学年自我鉴定2015
2014/09/28 职场文书
土木工程专业本科生求职信
2014/10/01 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
Python 中面向接口编程
2022/05/20 Python