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

相关文章

#error用法

/* *检查编译此源文件的编译器是不是C++编译器 *如果使用的是C语言编译器则执行#error命令 *如果使用的是 C++ 编译器则跳过#error命令 */ #ifndef __cplusplus #error 亲,您当前使用的不是C++编译器噢! #endif #include <stdio.h> int main() {

SQL Server中,isnull()函数以及null的用法

SQL Serve中的isnull()函数:          isnull(value1,value2)         1、value1与value2的数据类型必须一致。         2、如果value1的值不为null,结果返回value1。         3、如果value1为null,结果返回vaule2的值。vaule2是你设定的值。        如

tensorboard-----summary用法总结

Tensorflow学习笔记——Summary用法         最近在研究tensorflow自带的例程speech_command,顺便学习tensorflow的一些基本用法。 其中tensorboard 作为一款可视化神器,可以说是学习tensorflow时模型训练以及参数可视化的法宝。 而在训练过程中,主要用到了tf.summary()的各类方法,能够保存训练过程以及参数分布图并在

vscode-创建vue3项目-修改暗黑主题-常见错误-element插件标签-用法涉及问题

文章目录 1.vscode创建运行编译vue3项目2.添加项目资源3.添加element-plus元素4.修改为暗黑主题4.1.在main.js主文件中引入暗黑样式4.2.添加自定义样式文件4.3.html页面html标签添加样式 5.常见错误5.1.未使用变量5.2.关闭typescript检查5.3.调试器支持5.4.允许未到达代码和未定义代码 6.element常用标签6.1.下拉列表

YTKKeyValueStore用法

iOS端的尝试 后来我从后台转做iOS端的开发,我就尝试了在iOS端直接使用Key-Value式的存储。经过在粉笔网、猿题库、小猿搜题三个客户端中的尝试后,我发现Key-Value式的存储不但完全能够满足大多数移动端开发的需求,而且非常适合移动端采用。主要原因是:移动端存储的数据量不会很大: 如果是单机的应用(例如效率工具Clear),用户自己一个人创建的数据最多也就上万条。 如果

redis高级用法

redis 慢日志查询 配置参数 slowlog-log-slower-than 10000 #单位微秒 slowlog-max-len 选项指定服务器最多保存多少条慢查询日志 redis-cli slowlog get #获取慢日志1) 1) (integer) 4 # 日志的唯一标识符(uid)2) (integer) 1378781447 # 命令执

Log4j用法

日志是应用软件中不可缺少的部分,Apache的开源项目Log4j是一个功能强大的日志组件,提供方便的日志记录,具体请参考Log4j文档指南。 Log4j下载 在apache网站,可以免费下载到Log4j最新版本的软件包 Apache log4j  (推荐) Apache log4j 2 Log4j的包下载完成后,解压,将其中打包好的的log4j-1.x.x.jar导入你的工程

sql之top用法

TOP 子句 TOP 子句用于规定要返回的记录的数目。 对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。 注释: 并非所有的数据库系统都支持 TOP 子句。 SQL Server 的语法: SELECT TOP number|percent column_name(s)FROM table_name MySQL 和 Oracle 中的 SQL SELECT TOP 是等价的 M

Android自定义系列——9.Path详细用法

rXxx方法 rXxx方法的坐标使用的是相对位置(基于当前点的位移),而之前方法的坐标是绝对位置(基于当前坐标系的坐标)。 Path path = new Path();path.moveTo(100,100);path.lineTo(100,200);canvas.drawPath(path,mDeafultPaint); 在这个例子中,先移动点到坐标(100,100)处,之后再连接

LSSS算法实现,基于eigen和pbc密码库【一文搞懂LSSS,原理+代码】

文章目录 一. LSSS简介1.1 概述1.2 线性秘密分享方案(LSSS)与 Shamir的秘密分享方案对比LSSS1.2.1 Shamir的秘密分享方案1.2.2 线性秘密分享方案(LSSS)1.2.3 主要区别 二. 基于矩阵的LSSS加解密原理分析2.1 LSSS矩阵构造2.1.1 定义2.1.2 规则 12.1.3 规则 22.1.4 规则 32.1.5 形成线性共享矩阵M 2.