setTimeout妙用

目的:

通过变量控制执行函数的执行时间

初始思路

第一感觉是利用setInterval方法来处理

/*setInterval方法*/
let n = 0
let speed = 50
let clock = setInterval(()=>{
    n+=1
    output.innerText = n 
    if (n>10) {
        window.clearInterval(clock)
    }
},speed)

然而在实际执行后我们发现,当我们在执行的过程中改变变量speed的值的话,执行函数的执行时间并没有随之变化,这是因为浏览器对speed只进行了一次读取,当函数开始执行后,就不会再进行读取。

改进

此时用setTimeout方法可以达到预期效果

/*setTimeout方法*/
let n = 0
let speed = 50
let id =setTimeout(function fn(){
    n+=1
    output.innerText = n
    if (n>10){
    
    }else{
        setTimeout(fn,speed)
    }
},speed)
//关键点在于再次调用fn函数

总结

可以利用setTimeout()来达到setInterval的效果,关键在于再次调用fn函数

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

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,981评论 1 45
  • 一千位读者眼中就有一千位哈姆雷特,生活也是一本书,虽然主角是自己,但是同是生活这本书,不同的人却饰演出不同的风格;...
    有灵且美阅读 1,163评论 0 0
  • 文/玥伶 (2011.06.06的QQ日志) 今天凌晨二点多,接到朋友电话那边的悲伤,但更多的是她和那约好相守一生...
    凤归铭玥阅读 4,082评论 0 6
  • 导读: 我欲成魔,佛奈我何! “喂,醒醒。”一个青年低头看着一个人,用手推着他。这个昏迷不...
    殷灵峰阅读 2,563评论 0 1
  • 琅琊令之四面楚歌 | 暗箭难防 (文/亦浓) “怎么吵起来了?” “让我审文件,我认为不合适,让他改,他不改。” ...
    开在夜里的花儿阅读 1,781评论 0 15