setTimeout()方法总结

本文深入探讨了JavaScript中的setTimeout函数,它提供了一种定时执行代码的机制。通过示例代码展示了setTimeout的基本用法,并解释了其运行原理,强调了EventLoop在其中的作用。同时,文章通过一个具体的程序执行示例,阐述了setTimeout如何在执行栈中与同步任务交互,影响代码执行顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

setTimeout

setTimeout 简介

setTimeout是浏览器的js处理引擎或者是nodJs内核帮我们实现的一个方法,它的作用是提供一种定时执行的机制,让使用者可以实现在一个特定的时间后执行一段程序的目的。该函数看起来很简单,使用也很简单,但是它的实现及原理并不简单。

setTimeout 用法

我们可以通过setTimeout实现许多意想不到的功能,比如Promise的实现也依赖setTimeout。大多数情况下我们不必去考虑过多的细节,那么setTimeout的使用就比较简单了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
</head>
    <body>
        <script>
            setTimeout("alert('来啦 老弟!')", 3000);
        </script>
    </body>
</html>

setTimeout 原理

setTimeout运行机制是:当程序执行到setTimeout函数时,处理器会将代码移出本次执行程序,等到下一次Event Loop时,再检查是否到了指定的时间。如果到了就执行对应的代码。如果不到, 就等到下一轮Event Loop时重新判断。这意味着,setTimeout指定的代码,必须等到本次执行的所有代码都执行完,才会执行。
以下程序和图来源于其他博客

const bar = () => console.log('bar');
const baz = () => console.log('baz');
const foo = () => {
    console.log('foo');
    setTimeout(bar, 0);
    baz();
}
foo();

请添加图片描述
图中描绘了程序执行时,执行栈中的数据变化,途中红色标出的部分都与任务队列有关,绿色部分表示由于异步程序存在而被打破了原来的顺序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值