JS14- 定时器和延时器

定时器和延时器
        定时器: setInterval( 参数1 , 参数2 )
                参数1: 必须是函数的形式,定义的是执行的程序
                参数2: 定义时间间隔,每单位是毫秒
                按照设定的间隔时间,循环执行设定的程序,直到清除定时器

        延时器: setTimeout( 参数1 , 参数2 )
                参数1: 必须是函数的形式,定义的是执行的程序
                参数2: 定义时间延迟,每单位是毫秒
                按照延迟的事件,执行程序

        清除定时器延时器
                clearInterval()    clearTimeout()

        说明:
            定时器和延迟器,都是 异步 程序
            定时器,最开始,不会马上执行程序,要间隔指定的时间之后,才会执行,为了防止没右输出内容,会提前先执行程序一次
            定时器,延时器要存储在变量中,变量中存储的是,定时器,延时器的顺序,也就是,是整个程序中的第几个定时器,延时器
            定时器,延时器的计数是统一执行的,是不做区分的
            清除定时器和延时器两个方法,可以混用

一.定时器

根据设定的时间间隔,来循环执行程序
只要定时器不停止,程序就会一直执行

1.setInterval( 参数1 , 参数2 )
参数1:要执行的程序,必须是一个函数的形式 function(){ 定义程序 }
参数2:执行程序的间隔时间 单位是毫秒
时间间隔不能无限小,与计算机的刷新频率有关
60Hz 60赫兹 代表,1秒刷新60次
1次就是 1000 / 60 ---- 16.666… 毫秒
你定义的程序的时间间隔,不能小于 16.6666… 毫秒
我们一般都定义最少 0.1秒,也就是 100毫秒

每间隔1000毫秒,也是一秒,重复执行 function(){}中的程序

将定时器,存储在一个变量中

var interval1 = setInterval( function(){
    document.write('张老师帅极了' + '<br>');
} , 1000);

var interval2 = setInterval( function(){
    document.write('张老师不仅帅,还是非常帅' + '<br>');
} , 1000);

2.终止定时器
要终止定时器的执行,需要有两个条件
1,使用一个变量,来存储定时器
2,使用清除定时器方法,参数是这个定时器的变量

如果程序中,有多个定时器,清除哪个,就停止哪个
即使写多个参数,也只对第一个参数清除定时器
clearInterval(interval1);

3.如何间隔一段时间,再来停止定时器?
定义一个变量,来存储执行的次数

定义一个变量,存储执行次数

var int = 0;
var interval3 = setInterval( function(){
    document.write('张老师不仅帅,还是非常帅' + '<br>');
    // 每次执行,变量自增
    int++;

    // 当满足某个我们设定的条件时
    if(int == 10){
        // 清除定时器,终止程序的执行
        clearInterval(interval3);
    }
} , 1000);

console.log(interval3);

说明:
变量中,到底存储的是什么?
变中,存储的是当前 这个定时器 的 序号
这个序号,表示当前这个定时器,是整个程序中的第几个定时器
编号是从1开始编号的
所谓的清除定时器,实际上就是关闭整个程序中的第几个定时器

将定时器赋值给变量,只是将定时器的序号赋值给变量,不会影响定时器的执行

4.定时器的最后一个小问题

定时器最大的问题
程序的第一次执行,是在间隔规定的时间之后,才会执行
在走完第一个时间间隔之前,程序是不会执行的

为了防止时间间隔执行完毕之前,页面没有执行结果
会将程序,先 提前执行一次

为了防止5秒钟之内,页面内有输出内容
document.write(‘张老师和鹏哥比,谁更帅?还用问吗,当然是张老师’+’
’);

第一次向页面输出内容,是在间隔规定的5秒之后
setInterval( function(){
document.write(‘张老师和鹏哥比,谁更帅?还用问吗,当然是张老师’+’
’);
} , 5000 )

二.延时器

按照设定的时间,延迟程序的执行
延时器中的程序,只能执行一次
可以简单的理解为 定时炸弹 到了指定的时间就会执行,并且只会执行一次

语法:
setTimeout( 函数 , 延迟的时间 );
第一个参数,也是函数形式,来定义要执行的程序内容
第二个参数,定义延迟时间,单位也是毫秒

setInterval(function(){} , 1000);

延时5秒钟之后,执行程序

var timeout1 = setTimeout( function(){
    console.log('张老师还是很帅的');
} , 5000 )    
console.log(timeout1);

清除延时器
使用给一个变量存储延时器
清除延时器,参数是这个变量

clearInterval(timeout1);

延时器的小demo

在这里插入图片描述
在这里插入图片描述

三.特别说明

1, 变量存储的也是序号,表示的是第几个延时器
2, JavaScript中,定时器和延时器,的计数是不做区分的
也就是第几个定时器,和第几个延时器,是一起计算的,不做区分
setInterval(function(){} , 1000); 1
setInterval(function(){} , 1000); 2
settimeout(function(){} , 1000); 3
setInterval(function(){} , 1000); 4
settimeout(function(){} , 1000); 5
3, clearInterval 和 clearTimout 是不做区分的
clearInterval 可以清除定时器,也可以清除延时器
clearTimout 可以清楚延时器,也可以清除定时器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值