js settimeout()

本文通过一个简单的JavaScript代码示例,解释了浏览器中事件循环的工作机制。具体包括:同步代码的立即执行、Promise对象如何在当前执行栈清空后被处理以及setTimeout函数如何在下一个事件循环开始时执行。

setTimeout(function () {
  console.log('three');
}, 0);        //setTimeout(fn, 0)在下一轮“事件循环”开始时执行

Promise.resolve().then(function () {
  console.log('two');
});        //Promise.resolve()在本轮“事件循环”结束时执行

console.log('one');        //立即执行

// one
// two
// three

在 JavaScript 中,`setTimeout` 是一个非常常用的函数,用于在指定的间后执行某个函数或代码块。它是浏览器提供的 Web API 的一部分,允许我们在不阻塞主线程的情况下延迟执行代码。 ### 示例代码 以下是一个使用 `setTimeout` 的基本示例: ```javascript console.log("开始"); setTimeout(function() { console.log("这段代码在 2 秒后执行"); }, 2000); console.log("结束"); ``` ### 输出结果: ``` 开始 结束 这段代码在 2 秒后执行 ``` ### 代码解释: - `console.log("开始")`:立即执行,输出“开始”。 - `setTimeout(..., 2000)`:注册一个回调函数,并告诉浏览器在 2000 毫秒(即 2 秒)之后将该回调放入任务队列中等待执行。 - `console.log("结束")`:立即执行,输出“结束”。 - 2 秒后,回调函数被调用,输出“这段代码在 2 秒后执行”。 ### 重要特性: - **非阻塞性**:`setTimeout` 不会阻塞后续代码的执行。 - **异步执行**:回调函数是在主线程的事件循环中异步执行的。 - **最小延迟限制**:即使设置为 0 毫秒,浏览器也会至少延迟 4ms(根据 HTML5 规范)来执行。 --- ### 进阶用法:带参数的 `setTimeout` ```javascript function greet(name, message) { console.log(`${name}, ${message}`); } setTimeout(greet, 1000, "Alice", "你好!"); ``` ### 输出: ``` Alice, 你好! ``` --- ### 清除定器 你可以使用 `clearTimeout` 来取消尚未执行的 `setTimeout`: ```javascript let timerId = setTimeout(function() { console.log("这段代码不会执行"); }, 1000); clearTimeout(timerId); console.log("定器已被清除"); ``` --- ##
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值