我如何计算使用javascript在2个事件之间经过多长时间?比如,到毫秒?
答案 0 :(得分:13)
对Date
个对象执行算术运算时,会将它们隐式转换为毫秒(自1970-01-01 00:00:00 UTC开始),因此您需要做的就是减去Date
当操作从操作结束时创建的Date
开始时创建。
var start = new Date();
doSomeHeavyWork();
var end = new Date();
var millisecondsElapsed = end - start;
答案 1 :(得分:11)
最简单的方法。
console.time("timer name")
console.timeEnd("timer name")
这将以毫秒为单位输出时间到控制台。
答案 2 :(得分:4)
这很难做到。
var start = new Date();
// Do things here
var finish = new Date();
var difference = new Date();
difference.setTime(finish.getTime() - start.getTime());
alert( difference.getMilliseconds() );
答案 3 :(得分:2)
好吧,你可以使用firebug(firefox插件)来测试你的功能。查看此文章:benchmark javascript funcions
答案 4 :(得分:2)
如何制作可重复使用的计时器对象?
用法:
// event 1
document.getElementById('elId').onclick = function () {
timer.start('myTimer1');
};
// event 2
document.getElementById('otherElement').onclick = function () {
alert(timer.stop('myTimer1')); // alerts the time difference in ms
};
实现:
var timer = (function () {
var startTimes = {}; // multiple start times will be stored here
return {
start: function (id) {
id = id || 'default'; // set id = 'default' if no valid argument passed
startTimes[id] = +new Date; // store the current time using the timer id
},
stop: function (id) {
id = id || 'default';
var diff = (+new Date - startTimes[id]); // get the difference
delete startTimes[id]; // remove the stored start time
return diff || undefined; // return the difference in milliseconds
}
};
}());
答案 5 :(得分:1)
var initialTime = (new Date).getTime(), i = 55000;
(function() {
while ( i-- ) {
setTimeout( function(){}, 20 );
}
})()
var finalTime = ( new Date ).getTime(), diff = (new Date);
diff.setTime( finalTime - initialTime );
alert( diff.getMilliseconds() + 'ms' )