简单总结一下:
- setTimeout(fn, t)为超时调用,超过时间t,执行fn (仅执行一次)
- setInterval(fn, t)为间歇调用,每隔周期t,执行fn (执行多次)
两个函数均会返回一个ID,此ID为计划执行代码的唯一标识符号,可以用它来取消尚未执行的fn。
clearTimeout(ID)
clearInterval(ID):通常来讲此函数更重要,因为setInterval是周期性调用,代码会一直执行到页面卸载。
所以一般情况下,可以用超时调用模拟间歇调用,慎用间歇调用。
原因之一:任务队列中不会有两个及以上同一个定时器的回调函数,所以当fn执行时间大于t时,间歇调用setInterval会出现问题,具体分析可以参考文章,写的很详细,感谢作者。