JavaScript setInterval()与setTimeout()计时器

 更新时间:2019年12月27日 09:38:18   作者:冷月花魂  
这篇文章主要介绍了JavaScript setInterval()与setTimeout()计时器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  JavaScript是单线程语言,但是它可以通过设置超时值和间歇时间值来指定代码在特定的时刻执行。超时值是指在指定时间之后执行代码,间歇时间值是指每隔指定的时间就执行一次代码。

  超时调用

  超时调用使用window对象的setTimeout()方法,它接受两个参数:要执行的代码和以毫秒表示的时间(代码执行前的等待时间)。其中,第一个参数可以是一个字符串(和eval()中使用的字符串一样),也可以是一个函数。

  第二个参数是一个表示等待多长时间的毫秒数,但是在该时间过去后代码并不一定执行。JavaScript是一个单线程序的解释器,因此一定时间内只能执行一段代码。为了控制要执行的代码,就有一个JavaScript任务队列。这些任务会按照将它们添加到任务队列的顺序执行。setTimeout()的第二个参数告诉JavaScript再过多长时间把当前任务添加到队列中。如果队列是空的,那么添加的代码则会立即执行;如果队列不是空的,那么添加的代码会在前面的代码执行完毕后再执行。

  调用setTimeout()之后,该方法会返回一个数值ID,表示超时调用。这个超时调用ID是计划执行代码的唯一标识符,可以通过它来取消超时调用。取消超时调用使用方法clearTimeout();  

  

间歇调用

  间歇调用与超时调用类似,只不过它会按照指定的时间间隔重复执行代码,直至间歇调用被取消或页面被卸载。设置间歇调用的方法是setInterval(),它接收的参数与setTimeout()相同。取消间歇调用的重要性远高于超时调用。

  但是通常情况下,很少真正使用间歇调用,因为后一个间歇调用可能在前一个间歇调用结束之前调用。因此,我们通常会使用超时调用来模拟间歇调用

  

下面看两个小demo:

  1、获得当前日期并让它显示在文本框内,点击“stop”按钮后事件静止。(间歇调用) 

 HTML代码:

<input type="text" size="50" id="clock" />
<input type="button" value="Stop" id="btn" />

JavaScript代码:

function clock(){
  var time = new Date();
  document.getElementById("clock").value = time;  
  var btn =document.getElementById("btn");
  btn.onclick = function(){
    clearInterval(t); 
  }
}
var t = setInterval(clock,1000);

  2、使用setTimeou()实现计数统计效果,并在文本框中显示数值。

  HTML代码:

<input type="text" id="count" />

  JavaScript代码:

var num = 0;
function startCount(){
  document.getElementById("count").value = num;
  num += 1;
  setTimeout(startCount,1000);  //setTimeout是超时调用,使用递归模拟间歇调用
}  
setTimeout(startCount,1000);  //1s后执行

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 使用JS实现动态时钟

    使用JS实现动态时钟

    这篇文章主要为大家详细介绍了使用JS实现动态时钟,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • HTML中使背景图片自适应浏览器大小实例详解

    HTML中使背景图片自适应浏览器大小实例详解

    这篇文章主要介绍了HTML中使背景图片自适应浏览器大小实例详解的相关资料,需要的朋友可以参考下
    2017-04-04
  • 通过图文详细讲解JavaScript中的字符串方法

    通过图文详细讲解JavaScript中的字符串方法

    这篇文章主要介绍了JavaScript中字符串方法的相关资料,文中包括字符串长度、查找字符串、提取字符串、替换字符串、大小写转换、连接字符串、删除空白符、提取字符以及字符串转数组等方法,需要的朋友可以参考下
    2024-12-12
  • JavaScript中this的全面解析及常见实例

    JavaScript中this的全面解析及常见实例

    这篇文章主要给大家介绍了关于JavaScript中this的全面解析及常见实例的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用JavaScript具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • JavaScript CSS 通用循环滚动条

    JavaScript CSS 通用循环滚动条

    核心是 position:relative;,才能让其内部的 ul 以绝对定位,通过改变 top 值实现向上移位置。
    2009-10-10
  • javascript如何判断数组内元素是否重复的方法集锦

    javascript如何判断数组内元素是否重复的方法集锦

    javascript如何判断数组内元素是否重复的方法集锦...
    2007-02-02
  • JavaScript中你不知道的Object.entries用法

    JavaScript中你不知道的Object.entries用法

    大家应该都知道,Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致,这篇文章主要给大家介绍了关于JavaScript中你不知道的Object.entries用法的相关资料,需要的朋友可以参考下
    2021-10-10
  • JS作用域闭包、预解释和this关键字综合实例解析

    JS作用域闭包、预解释和this关键字综合实例解析

    这篇文章主要介绍了JS作用域闭包、预解释和this关键字,结合实例形式分析了javascript作用域闭包、预解释和this关键字在具体使用过程中的操作技巧与注意事项,需要的朋友可以参考下
    2016-12-12
  • JavaScript数组操作详解

    JavaScript数组操作详解

    本文主要介绍了JavaScript的数组操作,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • 基于js实现逐步显示文字输出代码实例

    基于js实现逐步显示文字输出代码实例

    这篇文章主要介绍了基于js实现逐步显示文字输出代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04

最新评论