一文读懂 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

相关文章

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

解读GC日志中的各项指标用法

《解读GC日志中的各项指标用法》:本文主要介绍GC日志中的各项指标用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基础 GC 日志格式(以 G1 为例)1. Minor GC 日志2. Full GC 日志二、关键指标解析1. GC 类型与触发原因2. 堆

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

深度解析Python装饰器常见用法与进阶技巧

《深度解析Python装饰器常见用法与进阶技巧》Python装饰器(Decorator)是提升代码可读性与复用性的强大工具,本文将深入解析Python装饰器的原理,常见用法,进阶技巧与最佳实践,希望可... 目录装饰器的基本原理函数装饰器的常见用法带参数的装饰器类装饰器与方法装饰器装饰器的嵌套与组合进阶技巧

Mysql中isnull,ifnull,nullif的用法及语义详解

《Mysql中isnull,ifnull,nullif的用法及语义详解》MySQL中ISNULL判断表达式是否为NULL,IFNULL替换NULL值为指定值,NULLIF在表达式相等时返回NULL,用... 目录mysql中isnull,ifnull,nullif的用法1. ISNULL(expr) → 判

Java中的for循环高级用法

《Java中的for循环高级用法》本文系统解析Java中传统、增强型for循环、StreamAPI及并行流的实现原理与性能差异,并通过大量代码示例展示实际开发中的最佳实践,感兴趣的朋友一起看看吧... 目录前言一、基础篇:传统for循环1.1 标准语法结构1.2 典型应用场景二、进阶篇:增强型for循环2.