在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 計時器問題最小時間粒度

計時器問題最小時間粒度

function getMini(){
  var i=0;
  var start=Date.now();
  var clock=setTimeout(function(){
      i++;
      if(i==1000){
        clearTimeout(clock);
        var end=Date.now();
        console.log((end-start)/i);
      }
      clock=setTimeout(arguments.callee,0);
  },0);
  }
getMini();

雖然經(jīng)??吹揭灿杏眠^var timer=setTimeout()z這樣的形式,但是不太懂為什么計時器得用一個變量聲明,是不是不用變量聲明,就清楚不了時間? clock=setTimeout(arguments.callee,0);這句話又是什么意思呢,arguments。callee指向當前正在調用的函數(shù)即這個匿名function,但是不是在內部js全部執(zhí)行完畢之后就再次只調用一次function嗎?看代碼的意思是clock執(zhí)行了1000次啊

回答
編輯回答
孤毒

1.定時器運行之后會返回一個id,代表他的唯一標識,就像你的身份證號一樣,這個id對你而言唯一的作用就是使用它來清除定時器,就像你下面代碼中寫的那樣

clearTimeout(clock)

2.setTimeout雖然是個一次性的定時器,但這個例子中是采用了循環(huán)調用的方式,每次定時器執(zhí)行的時候都會重修定制下一個定時器,直到i為1000的時候,取消這個定時器。

不過你確定你這個例子可以正常運行?先取消定時器,在設置定時器,是沒用的。得先設置,在根據(jù)判斷條件取消。

2018年1月1日 07:21