setInterval()改写成setTimeout()

setInterval()方法重复调用一个函数或执行一个代码段,在每次调用之间有固定的时间延迟。
setTimeout()方法设置一个定时器,定时器到期后执行一个函数或一段代码。

let n = 0
let id = setInterval ( () => {
  n += 1
  console.log(n)
}, 1000)

上面代码每秒打印一次n。但是由于只读取一次时间延迟,设置好以后无法更改时间延迟。
setTimeout()来改写setInterval()可以解决这个问题。

let duration = 1000
let n = 0
let id = setTimeout( function runAgain(){
  n += 1
  console.log(n)
  setTimeout(runAgain, duration)
}, duration)

上面代码可以通过改变duration的值来改变时间延迟。setTimeout每次执行都会读取延迟时间,所以改变时间能立即生效。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容