日期对象Date()
-
计算机纪元年 : 1970.01.01
-
每一个创建出来的date对象都记录着那一刻的时间
-
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( 即回调函数被执行的时间间隔 )不能被动态改变
扫描二维码关注公众号,回复: 10144175 查看本文章
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分钟?!!