Skip to main content

One post tagged with "setInterval"

View All Tags

· 5 min read
Robbie Han

setTimeout 和 setInterval 功能

setTimeout()会在确定的时间调用回调函数,且回调函数只会执行一次。

setInterval()会重复调用一个函数,在每次调用之间具有固定的时间延迟。

为什么要模拟

为什么使用setTimeout模仿setInterval呢?这需要通过事件循环机制来解释,如果不清楚的话可以点击查看事件循环机制浏览器内核相关内容。

由于setIntervalsetTimeout不是 JS 中定义的,他们并不会在 JS 引擎线程中直接执行。当代码执行到setIntervalsetTimeout时,事件循环机制会为setTimeoutsetInterval开一个定时器线程并开始计时,等定义的时间过后,将回调函数放到回调队列里,等到函数调用栈空(JS引擎线程空闲)时,将回调函数放入函数调用栈(使用 JS 引擎线程)执行。