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 相关文章推荐
javascript DOM编程实例(智播客学习)
Nov 23 Javascript
jQuery实现鼠标可拖动调整表格列宽度
May 26 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
Jul 29 Javascript
jquery.mousewheel实现整屏翻屏效果
Aug 30 Javascript
通用无限极下拉菜单的实现代码
May 31 Javascript
Vue.js组件tree实现省市多级联动
Dec 02 Javascript
WebPack基础知识详解
Jan 16 Javascript
jQuery监听浏览器窗口大小的变化实例
Feb 07 Javascript
JS实现的二叉树算法完整实例
Apr 06 Javascript
javascript闭包功能与用法实例分析
Apr 06 Javascript
详谈for循环里面的break和continue语句
Jul 20 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
Dec 24 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
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
PHP chmod 函数与批量修改文件目录权限
2010/05/10 PHP
PHP array操作10个小技巧分享
2011/06/23 PHP
php实现快速排序法函数代码
2012/08/27 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
php如何连接sql server
2015/10/16 PHP
PHP调用其他文件中的类
2018/04/02 PHP
php实现数字补零的方法总结
2018/09/12 PHP
js函数使用技巧之 setTimeout(function(){},0)
2009/02/09 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
2017/09/29 Javascript
Angularjs Promise实例详解
2018/03/15 Javascript
自定义vue组件发布到npm的方法
2018/05/09 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
2018/08/08 Javascript
Android 自定义view仿微信相机单击拍照长按录视频按钮
2019/07/19 Javascript
解决elementui表格操作列自适应列宽
2020/12/28 Javascript
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python中查看变量内存地址的方法
2015/05/05 Python
Python三级菜单的实例
2017/09/13 Python
对Python中数组的几种使用方法总结
2018/06/28 Python
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
Python中GeoJson和bokeh-1的使用讲解
2019/01/03 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
Python基于pyjnius库实现访问java类
2020/07/31 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
Grid 宫格常用布局的实现
2020/01/10 HTML / CSS
菲律宾旅游网站:Expedia菲律宾
2017/10/11 全球购物
eBay英国购物网站:eBay.co.uk
2019/06/19 全球购物
Made in Design英国:设计家具、照明、家庭装饰和花园家具
2019/09/24 全球购物
幼儿园元旦家长感言
2014/02/27 职场文书
无刑事犯罪记录证明
2014/09/18 职场文书
关于远足的感想
2015/08/10 职场文书
《攀登者》:“海拔8000米以上,你不能指望任何人”
2019/11/25 职场文书