nextTick用法、setTimeout用法、setInterval用法

一、nextTick用法

①使用Vue.js时遇到了异步更新DOM的问题;
②在某个特定场景下需要确保DOM已经更新后再执行某些操作;

场景:在修改数据后立即操作DOM元素,但发现数据变化后DOM还没更新,这时候就需要用到nextTick了。

原理:nextTick 是 Vue.js 的核心 API 之一,用于处理 DOM 更新时机问题。它的核心作用是:在 Vue 完成数据更新后,等待 DOM 更新完成时触发回调。

二、setTimeout

场景
(1)延迟操作:如页面加载后延迟显示弹窗 。
(2)函数节流:控制高频事件(如滚动)的触发频率。
(3)异步任务调度:配合事件循环机制管理代码执行顺序
原理:setTimeout() 是 JavaScript 中用于延迟执行代码或函数的定时器方法。
function:必需。要执行的函数或代码块。可以是:
①匿名函数:setTimeout(() => { /* 代码 */ }, delay);
②命名函数:setTimeout(myFunction, delay);
③字符串代码(不推荐):setTimeout(“alert(‘Hello’)”, delay);

delay:可选。延迟时间(毫秒),默认值为 0,表示立即将任务加入队列,但不保证立即执行 。
param1, param2, …:可选。传递给函数的额外参数(IE9 及更早版本不支持此特性)

function greet(name, role) {
  console.log(`Hello ${name}, you are a ${role}!`);
}
setTimeout(greet, 1000, "Alice", "Developer");

取消定时器:使用 clearTimeout(timeoutID),可阻止未执行的定时任务

const timerId = setTimeout(() => {}, 1000);
clearTimeout(timerId);

异步执行:setTimeout 是异步方法,即使延迟为 0,回调函数也会被放入任务队列,等待当前执行栈清空后才执行

setTimeout(() => { console.log(1); }, 0);
console.log(2); // 输出顺序:2 → 1

三、setInterval

原理:setInterval 是 JavaScript 中用于周期性执行代码的定时器函数

setInterval((a, b) => console.log(a + b), 1000, 1, 2); // 输出 3 三次/秒

时间精度限制:
delay 参数会被转换为 32 位整数,最大值约为 24.8 天(2147483647 毫秒),超过此值可能导致意外行为 。

停止定时器:

const intervalId = setInterval(() => {}, 1000);
clearInterval(intervalId); // 正确
// 或 clearTimeout(intervalId); // 技术上可行,但不推荐

与 setTimeout 的核心区别
(1)执行次数
setInterval:循环执行,按照固定时间间隔重复调用函数或代码,直到被 clearInterval 显式停止或窗口关闭 3 6 7。
setTimeout:单次执行,仅在指定延迟后执行一次函数,若需重复需通过递归调用自身实现 6 8。
(2)时间间隔控制
setInterval:每次执行的间隔是固定的,但如果函数执行时间超过间隔时间,会导致多个任务堆积(例如,间隔 1 秒的函数执行需 1.5 秒,后续任务会立即执行)。
setTimeout 递归:通过递归调用可确保每次执行的间隔是“延迟时间 + 函数执行时间”,避免任务堆积,更适用于需要严格间隔的场景(如轮询)。
(3)应用场景
setInterval:适合周期性且执行时间较短的任务(如实时更新时钟)。
setTimeout:适合单次延迟任务,或需要动态调整间隔的循环任务(如网络轮询)

setInterval 的潜在问题
任务堆积:若函数执行时间超过间隔时间,可能导致多个未完成的任务同时排队 。
内存泄漏:未正确使用 clearInterval 停止定时器时,可能导致回调函数持续占用内存 。
全局作用域问题:回调函数中的 this 默认指向全局对象(如 window),而非定义时的上下文。需通过闭包或 bind 方法绑定上下文。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/981391.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python项目】基于Python的图像去雾算法研究和系统实现

Python项目】基于Python的图像去雾算法研究和系统实现 技术简介:采用Python技术、MYSQL数据库等实现。 系统简介:图像去雾系统主要是基于暗通道先验和逆深度估计技术的去雾算法,系统功能模块分为(1)图像上传模块&…

游戏引擎学习第135天

仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾 game_asset.cpp 的创建 在开发过程中,不使用任何现成的游戏引擎或第三方库,而是直接基于 Windows 进行开发,因为 Windows 目前仍然是游戏的标准平台,因此首先在这个环境中进行…

【Linux】冯诺依曼体系结构-操作系统

一.冯诺依曼体系结构 我们所使用的计算机,如笔记本等都是按照冯诺依曼来设计的: 截止目前,我们所知道的计算机都是由一个一个的硬件组装起来的,这些硬件又由于功能的不同被分为了输入设备,输出设备,存储器…

[liorf_localization_imuPreintegration-2] process has died

使用liorf,编译没报错,但是roslaunch报错如下: 解决方法: step1: 如果你之前没有安装 GTSAM,可以尝试安装它 step2: 检查是否缺少依赖库 ldd /home/zz/1210/devel/lib/liorf_localization/liorf_localization_imuPr…

模块11_面向对象

文章目录 模块11_面向对象模块十回顾&&模块十一重点 第一章.接口1.接口的介绍2.接口的定义以及使用3.接口中的成员3.1抽象方法3.2默认方法3.3静态方法3.4成员变量3.4成员变量 4.接口的特点5.接口和抽象类的区别 第二章.多态1.多态的介绍2.多态的基本使用3.多态的条件下…

常见webshell工具的流量特征

1、蚁剑 1.1、蚁剑webshell静态特征 蚁剑中php使用assert、eval执行;asp只有eval执行;在jsp使用的是Java类加载(ClassLoader),同时会带有base64编码解码等字符特征。 1.2、蚁剑webshell动态特征 查看流量分析会发现…

03标准IO接口

一、系统与标准IO的区别 相同点:系统IO与标准IO都可以操作linux系统下的文件。 ⭐不同点: 系统IO:打开文件得到的是一个整数,称为文件描述符。 标准IO:打开文件得到的是一个指针,称为文件指针。系统IO:可以访问linux…

Axure高保真Element框架元件库

点击下载《Axure高保真Element框架元件库》 原型效果:https://axhub.im/ax9/9da2109b9c68749a/#g1 摘要 本文详细阐述了在 Axure 环境下打造的一套高度还原 Element 框架的组件元件集。通过对 Element 框架组件的深入剖析,结合 Axure 的强大功能&#…

【Linux】进程信号——信号保存和信号捕捉

文章目录 信号保存信号相关的概念信号是如何保存的呢?有关信号保存的系统调用sigprocmask信号的增删查改查看pending表验证接口 信号捕捉用户态与内核态信号捕捉流程 总结 信号保存 信号相关的概念 信号递达:指 操作系统 将一个信号(Signal…

【FL0090】基于SSM和微信小程序的球馆预约系统

🧑‍💻博主介绍🧑‍💻 全网粉丝10W,CSDN全栈领域优质创作者,博客之星、掘金/知乎/b站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战,以及程序定制化开发…

因子分析讲解

一、定义 因子分析(Factor Analysis)是一种常用于多变量统计分析的方法,主要用于数据降维、识别潜在的结构、理解变量间的关系。它通过将一组观察变量(通常是高度相关的变量)转化为一组较少的、互不相关的因子&#x…

从 JVM 源码(HotSpot)看 synchronized 原理

大家好,我是此林。 不知道大家有没有这样一种感觉,网上对于一些 Java 框架和类的原理实现众说纷纭,看了总是不明白、不透彻。常常会想:真的是这样吗? 今天我们就从 HotSpot 源码级别去看 synchronized 的实现原理。全…

DeepSeek搭配Excel,制作自定义按钮,实现办公自动化!

今天跟大家分享下我们如何将DeepSeek生成的VBA代码,做成按钮,将其永久保存在我们的Excel表格中,下次遇到类似的问题,直接在Excel中点击按钮,就能10秒搞定,操作也非常的简单. 一、代码准备 代码可以直接询问…

Metal学习笔记十一:贴图和材质

在上一章中,您设置了一个简单的 Phong 光照模型。近年来,研究人员在基于物理的渲染 (PBR) 方面取得了长足的进步。PBR 尝试准确表示真实世界的着色,真实世界中离开表面的光量小于表面接收的光量。在现实世界中&#xf…

zabbix“专家坐诊”第277期问答

在线答疑:乐维社区 问题一 Q:这个怎么解决呢? A:缺少这个依赖。 Q:就一直装不上。 A:装 zabbix-agent2-7.0.0-releasel.el7.x86 64 需要前面提示的那个依赖才可以装。 问题二 Q:大佬,如果agen…

让单链表不再云里雾里

一日不见,如三月兮!接下来与我一起创建单链表吧! 目录 单链表的结构: 创建单链表: 增加结点: 插入结点: 删除结点: 打印单链表: 单链表查找: 单链表…

图像生成-ICCV2019-SinGAN: Learning a Generative Model from a Single Natural Image

图像生成-ICCV2019-SinGAN: Learning a Generative Model from a Single Natural Image 文章目录 图像生成-ICCV2019-SinGAN: Learning a Generative Model from a Single Natural Image主要创新点模型架构图生成器生成器源码 判别器判别器源码 损失函数需要源码讲解的私信我 S…

指纹细节提取(Matlab实现)

指纹细节提取概述指纹作为人体生物特征识别领域中应用最为广泛的特征之一,具有独特性、稳定性和便利性。指纹细节特征对于指纹识别的准确性和可靠性起着关键作用。指纹细节提取,即从指纹图像中精确地提取出能够表征指纹唯一性的关键特征点,是…

泵吸式激光可燃气体监测仪:快速精准守护燃气管网安全

在城市化进程加速的今天,燃气泄漏、地下管网老化等问题时刻威胁着城市安全。如何实现精准、高效的可燃气体监测,守护“城市生命线”,成为新型基础设施建设的核心课题。泵吸式激光可燃气体监测仪,以创新科技赋能安全监测&#xff0…

HTML label 标签使用

点击 <label> 标签通常会使与之关联的表单控件获得焦点或被激活。 通过正确使用 <label> 标签&#xff0c;可以使表单更加友好和易于使用&#xff0c;同时提高整体的可访问性。 基本用法 <label> 标签通过 for 属性与 id 为 username 的 <input> 元素…