用于Metro风格应用程序的Javascript中的精确计时器

时间:2012-03-09 14:41:01

标签: javascript windows-8 microsoft-metro

我正在开发一个带有HTML5,CSS3和Javascript的Metro风格的应用程序,我需要一个精确的计时器。 setInterval()不适合这里,因为它不够精确。

我尝试过使用Windows.System.Threading,但它似乎没有在javascript中实现(我认为不会这样)。我也尝试了类似的东西:

    var date = new Date();
    var init = date.getTime();
    while(init + someTime < date.getTime())
       doNothing();
    doSomething();

但显然,这没效果。

任何人都知道我该怎么办?

感谢。

2 个答案:

答案 0 :(得分:1)

不确定我是否正在关注您的问题,但似乎并没有获得更高的精确度,您实际上只是想确保计时器在正确的时间点火,您的应用程序在前台或其他地方。

在Windows 8 Metro应用程序中,除非您的应用程序在进入后台时停止执行代码,否则您的计时器将会丢失。相反,您应该使用后台任务来触发定时事件。

文档:http://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.background.backgroundtaskbuilder.aspx

示例:http://code.msdn.microsoft.com/windowsapps/Background-Task-Sample-9209ade9

答案 1 :(得分:0)

我不知道Javascript中是否有任何直接调用可用。但是您可以使用C#或C ++围绕Win32调用QueryPerformanceCounter和QueryPerformanceFrequency编写WinRT包装器。这两个电话会帮助我创建一个high precision timer