zoukankan      html  css  js  c++  java
  • 用setTimeout()替代setInterval()

    为什么要用setTimeout()替代setInterval()?

    应用场景:速度切换

    通过改变duration的值更改setTimeout()执行时间从而更改事件发生的速度。

    设置变量duration,在

    setInterval(() = {
    // 执行代码
    }, duration)

    中,当你调用setInterval()时,只调用一次duration,那么当你更改duration时,setInterval()无法读取新的变化后的duration值。

    如何用setTimeout()替代setInterval()?

    举个例子:

    let n = 0;
    let id = setInterval(() => {
      n+=1;
      output.innerText=n; // 输出n
      if(条件){
        window.clearInterval(id);
      }
    }, 100);


    用setTimeout()替代setInterval():

    let n = 0;
    setTimeout(function fn(){
      n+=1;
      output.innerText=n; // 输出n
      if(条件){
        setTimeout(fn, 500);
      }
    }, 100);


    添加变量duration后:

    let n = 0;
    let duration = 100; // 给duration赋初值
    setTimeout(function fn(){
      n+=1;
      output.innerText=n; // 输出n
      if(条件){
        setTimeout(fn, duration); // 在setTimeout()中(延时的)递归调用且不满足条件时,中断是默认的
      }
    }, duration);


    这样在调用setTimeout()时每次的都会读取duration,得到变化的新duration值。

    总体讲的还比较笼统,(先挖坑,后期填上)。

  • 相关阅读:
    Cygwin 与 MinGW/MSYS/MSYS2,如何选择?甚至还有GNU utilities for Win32
    MinGW和MSYS项目是在一起的(翻译官网)
    库存限购
    ElasticSearch指南
    Windows系统的Jenkins持续集成环境
    JavaScript 框架
    Istio Service Mash管理微服务
    LinkedIn微服务框架rest.li
    Istio微服务架构初试
    github
  • 原文地址:https://www.cnblogs.com/lynn-z/p/12989989.html
Copyright © 2011-2022 走看看