javaScript的定时器

Vue中使用定时器setInterval和setTimeout
js中定时器有两种,一个是循环执行setInterval,另一个是定时执行setTimeout

一、循环执行(setInterval)

循环执行就是设置一个时间间隔,每过一段时间都会执行一次这个方法,直到这个定时器被销毁掉

用法是setInterval(“方法名或方法”,“延时”), 第一个参数为方法名或者方法,注意为方法名的时候不要加括号,第二个参数为时间间隔

<template>
</template>

<script>
  export default {
    data() {
      return {
        timer: '',
        value: 0
      };
    },
    methods: {
      get() {
        this.value ++;
        console.log(this.value);
      }
    },
    mounted() {
      this.timer = setInterval(this.get, 1000);
    },
    beforeDestroy() {
      clearInterval(this.timer);
    }
  };
</script>

二、定时执行 (setTimeout)

定时执行setTimeout是设置一个时间,等待时间到达的时候只执行一次,但是执行完以后定时器还在,只是没有运行

用法是setTimeout(“方法名或方法”, “延时”); 第一个参数为方法名或者方法,注意为方法名的时候不要加括号,第二个参数为时间间隔

<template>
  <section>
    <h1>hello world~</h1>
  </section>
</template>
<script>
  export default {
    data() {
      return {
        timer: '',
        value: 0
      };
    },
    methods: {
      get() {
        this.value ++;
        console.log(this.value);
      }
    },
    mounted() {
      this.timer = setTimeout(this.get, 1000);
    },
    beforeDestroy() {
      clearTimeout(this.timer);
    }
  };
</script>

三、 模拟短信验证码发送:

<template>
    <div id="login">
        <div class="sendMessage">  
            <div class="input">
                <el-input  v-model="input.phoneNum" placeholder="请输入手机号" :autosize="autosize"></el-input>
            </div>
            
            <div class="buttonComponent">
                <el-button round  v-on:click="sendMessage"  :disabled="dis"> {{value}} </el-button>
            </div>

            <div class="code">
                <el-input  v-model="input.code" placeholder="请输入验证码" ></el-input>
            </div>
        </div>
    </div>
</template>

<script>
export default {
    data(){
        return{
            value: "点击发送短信",
            dis: false,
            input: {
                phoneNum:'',
                code:''
            },
            autosize: true
        }
    },methods:{
        sendMessage(){
            this.value = 10;
            this.timer = setInterval(this.start, 1000); //发送短信,开启定时,每隔一秒执行一次start()
            this.dis = true;                            //按钮不可用
            this.$message('发送成功');    
        },
        start(){
            this.value--;
            console.log(this.value);
            if(this.value <= 0){
                clearInterval(this.timer); //停止
                this.value = "重新发送短信";
                this.dis = false;   
            }
        }
    },
    mounted(){
        //初始化
    },
    beforeDestroy(){
        //页面关闭时,也要销毁定时器
        clearInterval(this.timer); 
    }
}
</script>
上一篇:一篇文章彻底搞懂异步,同步,setTimeout,Promise,async


下一篇:关于定时器的设置与清除