定时器setTimeout、setInterval区别

60 阅读1分钟

定时器

JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()setInterval() 这两个函数来完成。

setTimeout()

setInterval()

区别

setTimeoutsetInterval的主要区别在于它们的行为模式和用途。

1. ‌执行次数‌:
  • setTimeout‌:只执行一次,在指定的延迟时间后执行一次回调函数
  • setInterval‌:会每隔指定的时间间隔重复执行回调函数,直到被清除或窗口关闭‌
2. ‌用途‌:
  • setTimeout‌:适用于需要延迟执行一次的任务,如延迟加载资源、处理动画的起始帧等
  • setInterval‌:适用于需要周期性执行的任务,如定时轮询服务器、更新计时器等‌
3. 机制
  1. 创建和添加回调函数‌:

    • 当调用setTimeout时,JavaScript引擎会创建一个定时器,并将回调函数添加到定时器队列中
    • setInterval则是每隔指定时间间隔执行一次回调函数‌
  2. 非阻塞性‌:

    • setTimeout‌和‌setInterval‌都不会阻塞其他JavaScript代码的执行。它们会在指定的延迟或间隔后异步执行回调函数‌
  3. 取消机制‌:

    • setTimeout‌和‌setInterval‌都可以通过返回的定时器ID使用clearTimeoutclearInterval来取消。如果在一个setTimeout的回调函数中再次调用setTimeout,可以实现类似setInterval的效果‌