js定时器每秒执行一次,为什么时间会不准?

JavaScript07

js定时器每秒执行一次,为什么时间会不准?,第1张

js是单线程的,主线程之外有个任务队列用来放异步任务,定时器就是异步的操作,定时器设置的时间,是指在1000毫秒后,可以调用回调函数得到异步操作的结果,但是必须保证主线程中的同步任务已经全部执行完毕,如果主线程还有同步任务在执行,即使1000毫秒到了,也不会去读取异步的任务队列,就是说,这个定时器等待的最短时间是1000毫秒。

//试试这个吧

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Document</title>

</head>

<body>

<div id="time"></div>

<script>

    <!--   

    var maxtime = 60*60 //一个小时,按秒计算,自己调整!

        function CountDown(){

            if(maxtime>=0){

                minutes = Math.floor(maxtime/60)

                seconds = Math.floor(maxtime%60)

                minutes = minutes>=10?minutes:'0'+minutes

                seconds = seconds>=10?seconds:'0'+seconds

                msg = "距离结束还有"+minutes+"分"+seconds+"秒"

                document.all["time"].innerHTML=msg

                if(maxtime == 5*60) alert('注意,还有5分钟!')

                --maxtime

            }else{

                clearInterval(timer)

                alert("时间到,结束!")

             }

        }

        timer = setInterval("CountDown()",1000)

    //-->

</script>

 

</body>

</html>

1、定时器

2、清除定时器

3、例如:  过一秒钟 在控制台上打印出 一个数字 比如1,再过一秒钟 打印出2 ....,点击清除定时器 终止打印 。

4、 setTimeout 和 setInterval的区别是:

5、 sessionStorage 存储之后 页面刷新 缓存的值不会消失, 但是 把tab页 或者叫 会话 关闭之后,缓存的值就不存在了。

6、  localStorage会一致存储在本地,会话或者tab页关闭也不会消失 ;

        localStorage是和地址有关系的,地址改变了,localStorage里面的值就不存在了;

        前面地址没有发生改变的话,localStorage依然存在 ,虽然页面改变了;