一文读懂 setTimeout 和 setInterval 的用法

2024-06-12 18:20

本文主要是介绍一文读懂 setTimeout 和 setInterval 的用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章导读:AI 辅助学习前端,包含入门、进阶、高级部分前端系列内容,当前是 JavaScript 的部分,瑶琴会持续更新,适合零基础的朋友,已有前端工作经验的可以不看,也可以当作基础知识回顾。

这篇文章瑶琴带大家学习 Window的属性:setTimeout和setInterval。setTimeout 和 setInterval 是JavaScript中用于定时操作的两个非常重要的函数,它们都属于 window 对象。这两个函数允许你指定在一定时间后执行的代码。

1.setTimeout

 用于在指定的毫秒数后执行一次函数或代码。

语法:

var timeoutID = window.setTimeout(function, delay);

timeoutID 是一个标识定时器的变量,可以用来在需要时清除定时器。

function 是要执行的函数或代码。

delay 是一个数值,表示函数执行前的等待时间(毫秒)。

示例:

// 在2秒后输出 "Hello, World!" 到控制台
window.setTimeout(function() {      console.log('Hello, World!');
}, 2000);

2.setInterval

setInterval 用于每隔指定的毫秒数重复执行一个函数或代码。

语法:

var intervalID = window.setInterval(function, delay);

intervalID 是一个标识定时器的变量,可以用来在需要时清除间隔。

function 是要重复执行的函数或代码。

delay 是一个数值,表示两次函数执行之间的时间间隔(毫秒)。

示例:

// 每隔1秒输出当前时间到控制台
var intervalID = window.setInterval(function() {      console.log(new Date().toLocaleTimeString());
}, 1000);

清除定时器:

使用 setTimeout 或 setInterval 返回的 timeoutID 或 intervalID,可以清除已经设置的定时器。

clearTimeout(timeoutID) - 清除由 setTimeout 设置的定时器。

clearInterval(intervalID) - 清除由 setInterval 设置的间隔。

示例:

// 假设我们有一个由 setTimeout 设置的定时器
var timeoutID = window.setTimeout(function() {      console.log('This will not be printed.');
}, 3000);// 在一定条件下,我们可能想清除这个定时器window.clearTimeout(timeoutID);

注意事项:

setTimeout 和 setInterval 接受的延迟时间最大为 32 毫秒,即使设置更长的时间,超出部分也不会生效。

定时器的执行可能会因为页面的加载、浏览器的渲染等其他因素而延迟。

传递给 setTimeout 和 setInterval 的函数会在全局作用域中执行,而不是在你调用它们的局部作用域中。

箭头函数与定时器:

在ES6中,可以使用箭头函数来简化函数的书写:

示例:

// 使用箭头函数
window.setTimeout(() => console.log('Hello, World!'), 2000);

使用箭头函数时,需要注意 this 的值。在箭头函数中,this 保持在定义它的上下文中的值,而不是在函数执行时的作用域中。

通过理解 setTimeout 和 setInterval 的使用,可以实现各种基于时间的动态效果,如动画、周期性更新数据等。这些函数是前端开发中常用的工具,掌握它们对于创建交互式网页非常重要。

下面瑶琴列举一些平时在开发过程中常用的案例:

1、延迟执行:在某些操作后需要延迟一段时间再执行其他操作,比如用户提交表单后,延迟一段时间再进行页面跳转或提示。

document.getElementById('myForm').addEventListener('submit', function(event) {  event.preventDefault();     alert('Form submitted!');      window.setTimeout(function() {            window.location.href = 'success.html'; // 延迟跳转到成功页面 }, 1000);
});

2、倒计时:实现倒计时功能,比如在用户执行某个操作后,显示一个倒计时并执行后续操作。

function countdown(seconds, callback) {      var intervalID = window.setInterval(function() {        console.log('Countdown: ', seconds);        if (--seconds < 0) {              window.clearInterval(intervalID);                  callback();            }      }, 1000);
}
countdown(5, function() {      console.log('Time is up!');
});

3、用户行为后的操作:在用户点击一个按钮后,延迟一段时间才执行某些操作,比如防止用户多次点击按钮。

document.getElementById('myButton').addEventListener('click', function() {   console.log('Button clicked');  window.setTimeout(function() {    // 执行需要延迟的操作  }, 3000);
});

4、图片轮播:在图片轮播组件中,可以使用 setTimeout 来控制图片切换的时间间隔。

var currentSlide = 0;var slides = document.querySelectorAll('.slide');
var intervalID = window.setInterval(nextSlide, 3000);
function nextSlide() {      // 隐藏当前幻灯片  slides[currentSlide].style.display = 'none';      // 显示下一张幻灯片  currentSlide = (currentSlide + 1) % slides.length;      slides[currentSlide].style.display = 'block';
}

5、实时更新数据:在需要周期性更新数据的场合,比如股票价格、新闻头条等.

var intervalID = window.setInterval(function() {  
fetch('https://api.example.com/stock-prices')                
.then(function(response) {              return  response.json();        
})        
.then(function(data) {              updateStockPrices(data);        
});
}, 60000); // 每60秒更新一次

6、定时检测网络连接:定期检查用户的网络连接状态。

window.setInterval(function() {  if (navigator.onLine) {        console.log('Online');  } else { console.log('Offline');  }
}, 5000);

7、定时保存草稿:在文本编辑器中,可以定期保存用户的输入作为草稿。

document.getElementById('text-editor').addEventListener('input', function() {      window.setTimeout(function() { saveDraft();      }, 5000);
});

通过这些案例,我们可以看到 setTimeout 和 setInterval 在前端开发中的重要性,初学者可以结合上面的示例实践一边。

它们可以用来实现各种基于时间的动态效果和用户交互,极大地增强了网页的功能性和用户体验。

希望今天的内容对初学前端的朋友有所帮助。也希望每一个初学者都能成为一个优秀的前端开发工程师,加油。

最后啰嗦一句,好记性不如烂笔头,希望大家在学习的过程中养成做笔记的习惯,形成自己的知识体系。

这篇关于一文读懂 setTimeout 和 setInterval 的用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1054982

相关文章

一文详解如何查看本地MySQL的安装路径

《一文详解如何查看本地MySQL的安装路径》本地安装MySQL对于初学者或者开发人员来说是一项基础技能,但在安装过程中可能会遇到各种问题,:本文主要介绍如何查看本地MySQL安装路径的相关资料,需... 目录1. 如何查看本地mysql的安装路径1.1. 方法1:通过查询本地服务1.2. 方法2:通过MyS

SQL Server中的PIVOT与UNPIVOT用法具体示例详解

《SQLServer中的PIVOT与UNPIVOT用法具体示例详解》这篇文章主要给大家介绍了关于SQLServer中的PIVOT与UNPIVOT用法的具体示例,SQLServer中PIVOT和U... 目录引言一、PIVOT:将行转换为列核心作用语法结构实战示例二、UNPIVOT:将列编程转换为行核心作用语

Java中 instanceof 的用法详细介绍

《Java中instanceof的用法详细介绍》在Java中,instanceof是一个二元运算符(类型比较操作符),用于检查一个对象是否是某个特定类、接口的实例,或者是否是其子类的实例,这篇文章... 目录引言基本语法基本作用1. 检查对象是否是指定类的实例2. 检查对象是否是子类的实例3. 检查对象是否

Java中的内部类和常用类用法解读

《Java中的内部类和常用类用法解读》:本文主要介绍Java中的内部类和常用类用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录内部类和常用类内部类成员内部类静态内部类局部内部类匿名内部类常用类Object类包装类String类StringBuffer和Stri

一文详解如何在Vue3中封装API请求

《一文详解如何在Vue3中封装API请求》在现代前端开发中,API请求是不可避免的一部分,尤其是与后端交互时,下面我们来看看如何在Vue3项目中封装API请求,让你在实现功能时更加高效吧... 目录为什么要封装API请求1. vue 3项目结构2. 安装axIOS3. 创建API封装模块4. 封装API请求

Python 异步编程 asyncio简介及基本用法

《Python异步编程asyncio简介及基本用法》asyncio是Python的一个库,用于编写并发代码,使用协程、任务和Futures来处理I/O密集型和高延迟操作,本文给大家介绍Python... 目录1、asyncio是什么IO密集型任务特征2、怎么用1、基本用法2、关键字 async1、async

一文带你搞懂Redis Stream的6种消息处理模式

《一文带你搞懂RedisStream的6种消息处理模式》Redis5.0版本引入的Stream数据类型,为Redis生态带来了强大而灵活的消息队列功能,本文将为大家详细介绍RedisStream的6... 目录1. 简单消费模式(Simple Consumption)基本概念核心命令实现示例使用场景优缺点2

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

SpringBoot UserAgentUtils获取用户浏览器的用法

《SpringBootUserAgentUtils获取用户浏览器的用法》UserAgentUtils是于处理用户代理(User-Agent)字符串的工具类,一般用于解析和处理浏览器、操作系统以及设备... 目录介绍效果图依赖封装客户端工具封装IP工具实体类获取设备信息入库介绍UserAgentUtils

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-