gpt4 book ai didi

javascript - WinJS setInterval() 挂起

转载 作者:行者123 更新时间:2023-12-03 12:27:00 24 4
gpt4 key购买 nike

我正在努力创建自定义 UI 光标。光标位置是通过每 5 毫秒检查一些输入值并调整 DOM 元素上的 style.top 和 style.left 属性来确定的。通常这工作得非常顺利,但是我发现光标有时会挂起。我不太确定是什么原因造成的,但它似乎与 WinJS.xhr() 调用中请求缓慢返回有关。

有没有更好的方法来更新我的光标 UI,使其保持平稳运行?我可以使用另一个线程吗?

最佳答案

请注意,5 毫秒对于屏幕刷新周期来说太快了。 60Hz 屏幕的刷新间隔最高为 16.7 毫秒,因此没有理由使用更短的间隔。在这种情况下,您希望使用 requestAnimationFrame 而不是 setInterval,因为这样您就知道您的 UI 工作将与屏幕刷新保持一致。否则,由于未对齐,您肯定会在光标动画中丢失一些帧。

不过,UI 线程上的任何阻塞工作都会阻塞光标刷新。 WinJS.xhr 不一定是这里的直接罪魁祸首——它基本上是 XMLHttpRequest 的包装器,它本身是一个在另一个线程上工作的异步调用。 但是,处理该请求结果的代码——也就是说,无论 WinJS.xhr 返回的 Promise 的完成处理程序中包含什么,会在用户界面线程。因此,如果您在那里做大量工作,您可能会阻塞一些刷新周期

不幸的是,JavaScript 不允许您直接访问创建单独的线程。 WinJS。然而,确实为此目的提供了调度程序机制。查看http://msdn.microsoft.com/en-us/library/windows/apps/dn301978.aspx还有http://try.buildwinjs.com/default.aspx#scheduler 。我还在 Windows 开发博客上写了一篇文章:Managing the JavaScript UI thread with the WinJS Scheduler .

您在这里要做的是以高优先级运行动画代码,并以正常或较低优先级运行 WinJS.xhr 完成的处理程序。

关于javascript - WinJS setInterval() 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24151733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com