默认的

setTimeout 只执行一次, 清除用clearTimeout

setInterval 每间隔指定的时间, 就执行一次, 清除用clearInterval

但是, setTimeout也可以用来执行 每隔一定时间间隔就执行一次, 方法是在 函数内部使用 "递归"的调用.

foo(); //调用一次foo函数
function foo(){
// 函数主体
// ... 该数据处理的, 执行数据处理;
// ... 该输出的, 就输出
// ... 该显示的, 你显示
// 主体执行完了 setTimeout(foo, 5000); }
// 这个方法, 是一种 固定的 套路 用法, 固定的写法.

那么 "递归setTimeout" 和 setInterval 的区别?

  • 如果要求 在固定的 精确 间隔时间后, 执行动作, 用setInterval,
  • 如果要避免setInterval 在短间隔时间 连续调用 产生的相互干扰, 特别是 每次函数的调用需要繁重的计算以及很长的处 理时间, 这时更容易产生干扰,此时最好用 setTimeout.
  • setTimeout不会产生干扰: 因为每次执行foo的时候, 总是先把当前这次foo的 函数主体 工作完成后, 再间隔指定时间后, 才会开始执行下一次foo的动作.实际上执行的只是一个 "函数入口" , 是线性的, 有先后次序的, 所以不会发生干扰. 而setInterval 则是 "并行的"....

jquery中也可以使用js原生代码, 只不过要注意和jquery对象相区分,搞清楚到底是js对象还是jquery对象. jquery中没有 "日期时间" 函数,所以还是用 js 原生的 日期-时间 函数:

// 获取当前的日期和时间
var datetime/dt= new Date();
alert(dt)
// datetime 显示的是: 星期 月日年 时间HH:ii:ss GMT+0800

程序代码举例

/*  在setInterval中使用匿名函数. */
<script src="js/jquery-1.10.2.js"></script>
<script type="text/javascript">
$(function() {
var i = 0;
var timer = setInterval(function(){
var dt = new Date();
var month = dt.getMonth()+1;
alert('现在是: '+ dt.getFullYear()+'年, '+ month +'月, '+dt.getDate()) + "日";
i++;
if (i>= 3){
clearInterval(timer); // 在setInterval函数内部, 就可以使用clearInterval清除计时器.
} },500);
});
</script>
/*  在setInterval中使用code,delay参数. */
<script type="text/javascript">
$(function() {
var timer = setInterval(showDate,500); // 这里千万注意, 参数code, 就直接写函数名, 不要加括号,也不要引号 var i = 0; // 这个初始化要放在函数的外面,才能保证只执行3次.
function showDate(){
var dt = new Date();
var month = dt.getMonth()+1;
alert('现在是: '+ dt.getFullYear()+'年, '+ month +'月, '+dt.getDate() + "日");
i++;
if (i>= 3){
clearInterval(timer);
}
}
});
// 使用setTimeout实现多次计时器
// /*===========================================
// * 特别注意的是, var i=0 循环次数控制变量的位置, 放在函数调用前/后,
// * 循环的次数是不同的, 这里如果var i=0 放在showDate()之后, 将会显示4次, 而不是预想的3次
// *===========================================*/ <script type="text/javascript">
$(function() {
// 先 只 调用一次 "包含" 函数
var i = 0;
showDate(); // 定义showDate, 并在函数内部使用: setTimeout(showDate, delay_microsecond) function showDate() { /* 函数主体 跟原来的业务处理 相同 */
i++;
var dt = new Date();
var month = dt.getMonth()+1;
alert('现在是: '+ dt.getFullYear()+'年, '+ month +'月, '+dt.getDate()) + "日";
if (i>= 3){
return;
}
setTimeout(showDate, 500);
} }); </script>

**计算机只做你告诉它该做的事情, 但是, 并不会做你想做的事情!**

setTimeout和setInterval的各自使用场景的更多相关文章

  1. 原生js轮播以及setTimeout和setInterval的理解

    下面这个代码是从一个群下载下来的,为了帮助自己理解和学习现在贴出来,与初学者共勉. <!DOCTYPE html> <html> <head> <meta c ...

  2. setTimeout和setInterval的使用

    引自(http://www.cnblogs.com/qiantuwuliang/archive/2009/06/20/1507304.html) 这两个方法都可以用来实现在一个固定时间段之后去执行Ja ...

  3. 【转】JS中setTimeout和setInterval的最大延时值详解

    前言 JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成.而这篇文中主要给大家介绍的是关于JS中setTi ...

  4. settimeout、setinterval区别和相互模拟

    前几天翻书,看到“避免双重求值”一节时有提到settimeout().setinterval() 建议传入函数而不是字符串以作为第一个参数,所以这里总结一下settimeout()和setinterv ...

  5. JS动画三剑客——setTimeout、setInterval、requestAnimationFrame

    一.前言 前端实现动画效果主要有以下几种方法:CSS3中的transition 和 animation ,Javascript 中可以通过定时器 setTimeout.setinterval,HTML ...

  6. 深入理解定时器系列第一篇——理解setTimeout和setInterval

    × 目录 [1]setTimeout [2]setInterval [3]运行机制[4]作用[5]应用 前面的话 很长时间以来,定时器一直是javascript动画的核心技术.但是,关于定时器,人们通 ...

  7. 前端开发:setTimeout与setInterval 定时器与异步循环数组

    前端开发:setTimeout与setInterval 定时器与异步循环数组 前言: 开通博客园三个月以来,随笔记录了工作中遇到的大大小小的难题,也看过无数篇令人启发的文章,我觉得这样的环境是极好的, ...

  8. setTimeout和setInterval从入门到精通

    我们在日常web前端开发中,经常需要用到定时器方法. 前端中的定时器方法是浏览器提供的,并不是ECMAScript规范中的.是window对象的方法. 浏览器中的定时器有两种, 一种是每间隔一定时间执 ...

  9. setTimeout和setInterval定时器使用详解测试

    var len=4; while(len--){ var time=setTimeout(function(){ console.log(len); },0); console.log(time); ...

随机推荐

  1. 78. Android之 RxJava 详解

    转载:http://gank.io/post/560e15be2dca930e00da1083 前言 我从去年开始使用 RxJava ,到现在一年多了.今年加入了 Flipboard 后,看到 Fli ...

  2. Bzoj2007 [Noi2010]海拔

    Time Limit: 20 Sec  Memory Limit: 552 MB Submit: 2380  Solved: 1130 Description YT市是一个规划良好的城市,城市被东西向 ...

  3. Cookie对象

    Cookie对象用于保存客户端浏览器请求的服务器页面,也可用于存放非敏感性的用户信息,信息保存的时间可以根据用户的需要进行设置.并非所有的浏览器都支持Cookie,并且数据信息是以文本的形式保存在客户 ...

  4. Linux/UNIX 定时任务 cron 详解

    定时任务( job)被用于安排那些需要被周期性执行的命令.利用它,你可以配置某些命令或者脚本,让它们在某个设定的时间内周期性地运行.cron 是 Linux 或者类 Unix 系统中最为实用的工具之一 ...

  5. Linux爆新漏洞,长按回车键70秒即可获得root权限

    漏洞来源这个安全问题来源于Cryptsetup存在的一个漏洞(CVE-2016-4484).Cryptsetup是在Linux统一密钥设置(Linux Unified Key Setup, LUKS) ...

  6. 常见linux命令释义(第六天)——shell环境变量

    太懒了,这几天好像得了懒癌,一点都不想写博客.后来想想,知识嘛,还是分享出来的好.第一治自己的懒癌:第二顺便巩固下自己的知识. Linux的变量分为两种,一种是系统变量,是系统一经启动,就写进内存中的 ...

  7. linux命令使用记录

    netstat: -a show both listening and none-listening sockets.默认是不显示listening sockets -t 仅显示tcp相关 默认是都显 ...

  8. HBase与MongDB等NoSQL数据库对照

    HBase概念学习(十)HBase与MongDB等NoSQL数据库对照 转载请注明出处: jiq•钦's technical Blog - 季义钦 一.开篇 淘宝之前使用的存储层架构一直是MySQL数 ...

  9. 【原】redux学习笔记

    上周学习了flux,这周研究了一下redux,其实很早之前都已经在研究他们了,只是之前一直没搞懂,最近这两周可能打通了任督二脉,都算入门了. 写博客的目的主要是做一下笔记,总结一下思路,以及和大家交流 ...

  10. JQuery------$.ajax()的使用方法

    菜鸟教程地址: http://www.runoob.com/jquery/ajax-ajax.html html(../Home/Index.cshtml) <body> <butt ...