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数组学习笔记
Nov 29 Javascript
js实现上传图片及时预览
May 07 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
Jun 08 Javascript
关于vue.js过渡css类名的理解(推荐)
Apr 10 Javascript
Vue开发中整合axios的文件整理
Apr 29 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
Jul 05 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
Jul 24 Javascript
jQuery自动或手动图片切换效果
Oct 11 jQuery
基于匀速运动的实例讲解(侧边栏,淡入淡出)
Oct 17 Javascript
electron demo项目npm install安装失败的解决方法
Feb 06 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
May 11 Javascript
django简单的前后端分离的数据传输实例 axios
May 18 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
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
PHP操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
php实现12306余票查询、价格查询示例
2014/04/17 PHP
php实现字符串首字母转换成大写的方法
2015/03/17 PHP
PHP直接修改表内容DataGrid功能实现代码
2015/09/24 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
关于JavaScript的一些看法
2009/05/27 Javascript
smartcrop.js智能图片裁剪库
2015/10/14 Javascript
jquery自定义表单验证插件
2016/10/12 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
2016/11/17 Javascript
微信小程序模板之分页滑动栏
2017/02/10 Javascript
nodejs读写json文件的简单方法(必看)
2017/03/09 NodeJs
JavaScript实现计数器基础方法
2017/10/10 Javascript
vue中keep-alive的用法及问题描述
2018/05/15 Javascript
使用angular-cli webpack创建多个包的方法
2018/10/16 Javascript
layer.alert回调函数执行关闭弹窗的实例
2019/09/11 Javascript
JS数组方法reverse()用法实例分析
2020/01/18 Javascript
小程序跳转H5页面的方法步骤
2020/03/06 Javascript
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
Python中定时任务框架APScheduler的快速入门指南
2017/07/06 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
通过python顺序修改文件名字的方法
2018/07/11 Python
一文了解Python并发编程的工程实现方法
2019/05/31 Python
python实现合并多个list及合并多个django QuerySet的方法示例
2019/06/11 Python
pandas数据处理进阶详解
2019/10/11 Python
Python3常见函数range()用法详解
2019/12/30 Python
解决Pycharm的项目目录突然消失的问题
2020/01/20 Python
matlab灰度图像调整及imadjust函数的用法详解
2020/02/27 Python
详解Html5 Canvas画线有毛边解决方法
2018/03/01 HTML / CSS
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
美国在线旅行社:Crystal Travel
2018/09/11 全球购物
个人担保书范文
2014/05/20 职场文书
明确岗位职责
2015/02/14 职场文书
创业计划书之孕婴生活馆
2019/11/11 职场文书