我正在开发一个带有HTML5,CSS3和Javascript的Metro风格的应用程序,我需要一个精确的计时器。 setInterval()不适合这里,因为它不够精确。
我尝试过使用Windows.System.Threading,但它似乎没有在javascript中实现(我认为不会这样)。我也尝试了类似的东西:
var date = new Date();
var init = date.getTime();
while(init + someTime < date.getTime())
doNothing();
doSomething();
但显然,这没效果。
任何人都知道我该怎么办?
感谢。
答案 0 :(得分:1)
不确定我是否正在关注您的问题,但似乎并没有获得更高的精确度,您实际上只是想确保计时器在正确的时间点火,您的应用程序在前台或其他地方。
在Windows 8 Metro应用程序中,除非您的应用程序在进入后台时停止执行代码,否则您的计时器将会丢失。相反,您应该使用后台任务来触发定时事件。
示例:http://code.msdn.microsoft.com/windowsapps/Background-Task-Sample-9209ade9
答案 1 :(得分:0)
我不知道Javascript中是否有任何直接调用可用。但是您可以使用C#或C ++围绕Win32调用QueryPerformanceCounter和QueryPerformanceFrequency编写WinRT包装器。这两个电话会帮助我创建一个high precision timer。