获取新DateTime
内容对我来说不够准确.浏览器中的日期对象以毫秒为单位给出整数.我希望能够获得比标准日期对象更精确的时间.这可能吗?我怎样才能做到这一点?
使用window.performance.now()
得到单调,高分辨率的时间.该now()
函数在小数中返回一个微秒的double.
这是一个例子:
import 'dart:html';
main() {
var time = window.performance.now();
print(time); // 12123.24341221
}
Run Code Online (Sandbox Code Playgroud)
请注意,这now()
不是典型的"时代的时间".相反,它是一个三角洲window.performance.timing.navigationStart
.
该navigationStart
字段定义为(来自规范):
在用户代理完成提示卸载先前文档后,此属性必须立即返回时间.如果没有先前的文档,则此属性必须返回与fetchStart相同的值.
该window.performance.now()
时间戳是伟大的,因为它不受时钟偏斜,比得到一个新的更准确DateTime
.
如果你的应用程序是由requestAnimationFrame
(如果没有,为什么不?)那么你已经有了一个高分辨率的时间戳!
返回的Future animationFrame
以高分辨率时间戳完成:
Future<num> animationFrame;
Run Code Online (Sandbox Code Playgroud)
你可以像这样使用它:
gameLoop(num highResolutionTime) {
// stuff
window.animationFrame.then(gameLoop);
}
main() {
window.animationFrame.then(gameLoop);
}
Run Code Online (Sandbox Code Playgroud)
如果要测量时间跨度,请使用Stopwatch
该类。它可以通用(在客户端和服务器上)工作,并且应该提供最佳的分辨率。
var sw = new Stopwatch()..start();
doSomething();
print(sw.elapsed);
print(sw.elapsedMicroseconds);
Run Code Online (Sandbox Code Playgroud)
目前(截至2013年4月),浏览器中的秒表尚未使用该window.performance
功能,但这是一个错误,应予以修复。同时,您可以使用Seth建议的解决方法。
归档时间: |
|
查看次数: |
441 次 |
最近记录: |