zoukankan      html  css  js  c++  java
  • js定时器的一些小问题

     1 js中定时器分为两种:setInterval和setTimeout, 但是在代码的执行中,定时器的优先级最低,系统里其他不在执行的时候,它才开始。例子如下:
     2 
     3 <script>
     4 window.onload=function(){
     5     setInterval(function(){
     6         alert(1);    
     7     },10);
     8     for(var i=0;i<1000000;i++){
     9         for(var j=0;j<1000000;j++){
    10             var a=10;
    11              a*=5;    
    12         }
    13         
    14     }
    15     alert(a);
    16 };
    17 </script>
    18 
    19 定时器里面的执行时间为10毫秒,   for循环里面为100万毫秒。打开页面的时候一直处于刷新状态,而不是先弹出1, 刷新一段时间后,先弹出50;再弹出1;
    20 
    21 
    22 第二个例子:
    23 
    24 <script>
    25 window.onload=function (){
    26     var oMin=document.getElementById('min');
    27     var oSec=document.getElementById('sec');
    28     var oMin2=document.getElementById('min2');
    29     var oSec2=document.getElementById('sec2');
    30     
    31     var start=new Date();
    32     var s2=0;
    33     
    34     setInterval(function (){
    35         var now=new Date();
    36         
    37         var s=parseInt((now.getTime()-start.getTime())/1000);
    38         
    39         s2+=0.01;
    40         
    41         oMin.innerHTML=parseInt(s/60);
    42         oSec.innerHTML=s%60;
    43         
    44         oMin2.innerHTML=parseInt(s2/60);
    45         oSec2.innerHTML=parseInt(s2%60);
    46     }, 10);
    47     
    48     document.getElementById('div1').innerHTML=new Date();
    49 };
    50 </script>
    51 </head>
    52 
    53 <body>
    54 <div id="div1"></div>
    55 <span id="min">00</span>:<span id="sec">00</span><br>
    56 <span id="min2">00</span>:<span id="sec2">00</span>
    57 </body>
    58 </html>
    59 上下两个秒表经过一段时间后纯在了时间差     问题出现在s2+=0.01; 定时器会受系统其它函数的影响,因而影响其性能。导致存在误差-------也就是说以后遇到时间的时候,尽量用系统的时间来处理。比如:
    60 
    61 秒表:
    62 
    63 var start=new Date();
    64 
    65 setInterval(function(){
    66 
    67 var now=new Date();    
    68 var s=parseInt((now.getTime()-start.getTime())/1000);
    69 
    70 },1000),
    71 
    72 也可以实现秒表效果。
    

      

  • 相关阅读:
    深入浅出设计模式——命令模式(Command Pattern)
    深入浅出设计模式——职责链模式(Chain of Responsibility Pattern)
    深入浅出设计模式——代理模式(Proxy Pattern)
    深入浅出设计模式——享元模式(Flyweight Pattern)
    深入浅出设计模式——外观模式(Facade Pattern)
    perl字符串操作符
    perl中单引号和双引号字符串区别
    用例图详解
    perl中system函数和反引号` `使用区别
    window cmd命令行下执行perl语句
  • 原文地址:https://www.cnblogs.com/jasonwang2y60/p/5991494.html
Copyright © 2011-2022 走看看