首页 > 代码库 > 定时器的问题

定时器的问题

 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 也可以实现秒表效果。

 

定时器的问题