JS中SetTimeout和SetInterval使用初探

yizhihongxing

我来为你详细讲解一下 “JS中SetTimeout和SetInterval使用初探”的攻略,包括示例说明:

简介

在 JS 中,setTimeout 和 setInterval 都能用来设置定时器,它们都是 window 对象的方法。它们非常常用,能够通过回调函数的方式实现一些延时操作或者是循环操作。这里我会结合示例带领大家初步了解它们的使用。

setTimeout

setTimeout 可以延迟一定时间后执行一个回调函数,传入两个参数:回调函数和延迟时间,单位是毫秒,例如:

setTimeout(function() {
  console.log('延迟 1 秒钟后输出');
}, 1000);

这个函数会等待 1000ms(1秒钟)后执行 console.log 输出“延迟 1 秒钟后输出”。

值得注意的是,setTimeout 的延迟时间不是准确的时间,而是大于等于指定时间,因为 setTimeout 是将回调函数放到了任务队列中,而任务队列中的任务执行需要一定的时间。如果有其他任务比它先加入到队列中,该回调函数会等待前面的任务执行完后再被执行。

也就是说,如果设定的延迟时间很短,但前面有其他耗时的任务在执行,那么该回调函数就要等待前面的任务执行完才会被执行。因此,setTimeout 并不能保证任务在指定时间内一定会执行。

但是,可以通过 clearTimeout 函数取消设置的定时器,例如:

var timerId = setTimeout(function() {
  console.log('延迟 1 秒钟后输出');
}, 1000);

clearTimeout(timerId);

在这个示例中,setTimeout 函数返回的是一个未来的唯一 ID,我们可以将它赋值给一个变量,然后在需要的时候,通过 clearTimeout 函数取消设置的定时器。需要注意的是,如果正在执行的回调函数内部调用了 clearTimeout 函数,那么这个定时器也会被取消。

setInterval

setInterval 和 setTimeout 的用法非常相似,不同的是 setInterval 会不断地在指定的时间间隔内循环执行回调函数。

例如:

function clock() {
  console.log(new Date().toLocaleTimeString());
}

setInterval(clock, 1000);

这个函数会每隔 1000ms 循环执行 clock 函数,并输出当前时间,也就是一个秒表。

与 setTimeout 一样,setInterval 也可以通过 clearInterval 函数取消循环定时器,例如:

var timerId = setInterval(function() {
  console.log('每隔 1 秒钟输出一次');
}, 1000);

clearInterval(timerId);

如果正在执行的回调函数内部调用了 clearInterval 函数,那么这个循环定时器也会被取消。

示例说明

接下来我再给出一些更为详细的示例说明帮助大家更好地理解它们的应用场景。

示例一:倒计时

var countDown = 10;

function tick() {
  console.log(countDown);
  if (countDown === 0) {
    console.log('倒计时结束');
    clearTimeout(timerId);
  } else {
    countDown--;
  }
}

var timerId = setInterval(tick, 1000);

这个示例中我们通过使用 setInterval 来实现倒计时,每隔 1000ms 输出当前倒计时的数字,直到倒计时结束。当倒计时结束时,我们通过 clearTimeout 函数来取消循环定时器。

示例二:轮播图

var images = [
  'image1.jpg',
  'image2.jpg',
  'image3.jpg'
];

var current = 0;

function changeImage() {
  var img = document.getElementById('image');
  img.setAttribute('src', images[current]);

  current++;

  if (current === images.length) {
    current = 0;
  }
}

var timerId = setInterval(changeImage, 3000);

这个示例中我们通过使用 setInterval 来实现轮播图的效果,通过不断地切换图片实现自动轮播。每隔 3000ms 切换一次图片。同样,我们可以通过 clearInterval 函数来取消循环定时器,实现停止轮播的效果。

结尾

现在我们已经初步认识了 setTimeout 和 setInterval 这两个函数的使用,在实际开发中,它们常常被用来实现诸如动画效果、倒计时、轮播图等功能。希望这份攻略对你有所帮助,如果大家还有其他关于setTimeout和setInterval方面不理解的地方,欢迎一起讨论学习。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS中SetTimeout和SetInterval使用初探 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 带你揭开神秘的Javascript AST面纱之Babel AST 四件套的使用方法

    作者:京东零售 周明亮 写在前面 这里我们初步提到了一些基础概念和应用: 分析器 抽象语法树 AST AST 在 JS 中的用途 AST 的应用实践 有了初步的认识,还有常规的代码改造应用实践,现在我们来详细说说使用 AST, 如何进行代码改造? Babel AST 四件套的使用方法 其实在解析 AST 这个工具上,有很多可以使用,上文我们已经提到过了。对于…

    JavaScript 2023年4月17日
    00
  • JS优雅的使用function实现一个class

    使用function实现一个class的过程被称为JavaScript中的“类式继承”。下面是一个完整攻略,包含了步骤和示例。 步骤 使用function定义一个主要的类,并将它赋值给一个变量,例如Person。这个类将包含构造函数和其他的原型方法。 在主类中定义原型方法,例如Person.prototype.sayHello,这里是一个例子: javasc…

    JavaScript 2023年5月27日
    00
  • 正则表达式中test、exec、match的区别介绍及括号的用法

    正则表达式是用于匹配文本的强大工具,它允许您使用模式来搜索、替换和操作文本。在使用正则表达式时,test、exec、match及括号都是常用的概念,它们的用法与意义都不同。 test、exec、match的区别介绍 test方法 test方法是RegExp对象的方法之一,它的作用是测试一个字符串是否匹配某个正则表达式,返回布尔值。如果匹配成功,test方法返…

    JavaScript 2023年6月10日
    00
  • 为什么JavaScript没有块级作用域

    为什么JavaScript没有块级作用域 在JavaScript中,块级作用域指的是使用一对花括号({})创建的代码块,在这个代码块内声明的变量只能在代码块内部访问,并且在代码块外部无法访问。但是,JavaScript没有真正的块级作用域,这意味着在块级作用域之外仍然可以访问在块级作用域内部声明的变量。这是由于JavaScript采用了词法作用域(也称为静态…

    JavaScript 2023年6月10日
    00
  • python selenium操作cookie的实现

    Python Selenium操作Cookie的实现: 引入selenium模块 from selenium import webdriver 定义浏览器对象 browser = webdriver.Chrome() 获取网站Cookie信息 browser.get(‘https://www.baidu.com’) print(browser.get_coo…

    JavaScript 2023年6月11日
    00
  • asp.net的GridView控件使用方法大全

    ASP.NET GridView控件的使用方法大全 ASP.NET GridView是一种常用的Web控件,用于显示或编辑数据库中的数据。在本篇文章中,我们将详细介绍GridView控件的使用方法。 GridView控件基本使用方法 创建GridView控件 使用ASP.NET Web表单,可以在可视化设计界面中加入GridView控件,或者手动编辑代码,添…

    JavaScript 2023年6月11日
    00
  • webpack-dev-server搭建本地服务器的实现

    下面给大家讲讲如何使用webpack-dev-server搭建本地开发服务器并实现实时重载,具体步骤如下: 安装webpack-dev-server 首先,在项目中安装webpack-dev-server,可以使用npm安装,命令为: npm install webpack-dev-server –save-dev 配置webpack-dev-server…

    JavaScript 2023年6月11日
    00
  • DOM节点深度克隆函数cloneNode()用法实例

    DOM节点深度克隆函数cloneNode()是一个非常常用的方法,可用于将当前节点的所有子孙节点以及属性克隆到新节点中。本文将详细介绍cloneNode()的用法,包括如何使用该方法创建克隆节点、如何克隆节点的所有子元素以及如何实现深拷贝等。 克隆节点 首先我们来看如何使用cloneNode()方法创建克隆节点。cloneNode()方法可以接收一个参数,表…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部