前言
让我们回想一下关于定时器的内容,我们只知道,他是在我们设置的时间后才异步执行的程序。
可在面试时回答这个就够了吗?那当然是不够的。
本文将带你深入了解定时器底层
定义
我们先了解什么是定时器。
在JavaScript 中,定时器是一种用于延迟执行代码或定期执行代码的机制。它们允许开发者控制代码执行的时间点,从而实现诸如动画、轮询服务器、设置等待时间等功能。而定时器也分为两类setTimeout和setInterval。
执行原理
那么定时器的执行原理是什么呢?
我们都知道,JavaScript是单线程,只有一条主线程来处理任务,而我们的定时器则是可以异步执行的,在主线程任务结束后,才轮到我们的定时器执行。执行的都是我们的回调函数,放入处理异步函数的核心机制Event loop(事件循环)中,决定了什么时候执行代码。
总的来说,就是当程序碰到定时器时,会将其放入事件循环中,先忽略掉,待主线程内其他任务完成时,再执行定时器任务。
setTimeout
setTimeout 是 JavaScript 中用于延迟执行代码的内置函数。它允许你指定一段代码(通常是一个函数)在经过给定的时间间隔后执行。这个时间间隔是以毫秒为单位的,1000 毫秒等于 1 秒。也是最常见的定时器用法。
例子有:
const timeout= setTimeout(function(){
console.log('abcdefg');
},10000)
console.log(123)
先输出123,之后等待十秒钟左右,才会进行定时器输出。
最小时间
假如我将延迟设置为0ms,那么定时器会立即执行吗?
答案是否定的。定时器并不会立即执行

217

被折叠的 条评论
为什么被折叠?



