DOM基础知识(五)

日期对象Date()

  • 计算机纪元年 : 1970.01.01

  • 每一个创建出来的date对象都记录着那一刻的时间

  • doc

  • getTime()可以计算时间间隔(ms)

  var start = new Date().getTime();
  for (var i = 0; i < 100000000; i ++>) {}
  var end = new Date().getTime();
  console.log(end - start);
  • 应用场景举例

    • 限时秒杀购物

    • 闹钟

    • 任何需要获取时间差的场景

定时器

  • setInterval()、setTimeout()、clearInterval()、clearTimeout() 都是全局对象window上的方法,内部函数this指向window

  • setInterval 和 setTimeout 首帧都不执行

  • 定时器一旦生效,在取消定时器之前,Timeout._idleTimeout( 即回调函数被执行的时间间隔 )不能被动态改变

  var time = 1000;
  timer = setInterval(()=> {
    console.log(1);
  }, time);
  time = 2000;
  // 依然每隔一秒打印一次1
  • 其实定时器在计时方面并不精准
var start = new Date().getTime();
setInterval(()=>{
  var end = new Date().getTime();
  console.log(end - start);
  start = end;
}, 1000);
  • 经执行,打印结果在1000或1000左右,并不精准

  • 从js执行队列方面考虑,每隔1000ms只是将回调函数放入了执行队列,并不能保证及时执行

  • 定时器的数据结构基于红黑树,所以有小于1000ms就执行回调函数的情况

  • 取自《高性能JavaScript》&&《你不知道的JS》

  • setTimeout应用场景距离

    • VIP电影试看5分钟?!!
发布了49 篇原创文章 · 获赞 29 · 访问量 1888

猜你喜欢

转载自blog.csdn.net/Brannua/article/details/104878683