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 相关文章推荐
一段效率很高的for循环语句使用方法
Aug 13 Javascript
jquery加载页面的方法(页面加载完成就执行)
Jun 21 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
Aug 31 Javascript
详解jquery事件delegate()的使用方法
Jan 25 Javascript
bootstrap按钮插件(Button)使用方法解析
Jan 13 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
Jan 22 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
Apr 25 Javascript
node.js 发布订阅模式的实例
Sep 10 Javascript
Puppet的一些技巧
Sep 17 Javascript
npm scripts 使用指南详解
Oct 08 Javascript
vue项目中引入Sass实例方法
Aug 27 Javascript
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
Nov 27 Vue.js
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
星际中一些鲜为人知的详细资料
2020/03/04 星际争霸
浅析Mysql 数据回滚错误的解决方法
2013/08/05 PHP
yii中widget的用法
2014/12/03 PHP
asp函数split()对应php函数explode()
2019/02/27 PHP
js打开新窗口方法整理
2014/02/17 Javascript
javascript实现在某个元素上阻止鼠标右键事件的方法和实例
2014/08/12 Javascript
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
jQuery+easyui中的combobox实现下拉框特效
2015/02/27 Javascript
js实现简单的联动菜单效果
2015/08/19 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
2015/12/04 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
微信小程序 生命周期详解
2016/10/12 Javascript
javascript遍历json对象的key和任意js对象属性实例
2017/03/09 Javascript
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
2017/12/14 Javascript
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
Bootstrap 模态框自定义点击和关闭事件详解
2018/08/10 Javascript
详解element-ui中form验证杂记
2019/03/04 Javascript
vue+iview动态渲染表格详解
2019/03/19 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
vuex(vue状态管理)的特殊应用案例分享
2020/03/03 Javascript
React组件设计模式之组合组件应用实例分析
2020/04/29 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
vue-cli3自动消除console.log()的调试信息方式
2020/10/21 Javascript
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
python中in在list和dict中查找效率的对比分析
2018/05/04 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
2018/12/05 Python
Python Celery多队列配置代码实例
2019/11/22 Python
python给list排序的简单方法
2020/12/10 Python
英国排名第一的最新设计师品牌手表独立零售商:TIC Watches
2016/09/24 全球购物
全球最大的生存食品、水和装备专用在线市场:BePrepared.com
2020/01/02 全球购物
园林施工员岗位职责
2013/12/11 职场文书
优秀团员个人事迹材料
2014/01/29 职场文书
购房协议书范本
2014/04/11 职场文书
教师思想作风整顿个人剖析材料
2014/10/10 职场文书
市直属机关2016年主题党日活动总结
2016/04/05 职场文书