我正在javascript中使用setTimeout()
函数,以便在我解析某些xml数据时允许显示“loading”的弹出窗口。我发现在足够小的延迟值(低于10毫秒)时,它没有时间在浏览器冻结片刻之前显示它以进行实际工作。
在50ms,它有足够的时间,但我不知道这将转化为其他系统有多好。是否有某种“经验法则”规定了确保视觉更新所需的延迟量,而不会造成不必要的延迟?
显然,它取决于运行代码的机器等,但我只想知道是否有任何东西可以提供比我的猜测更多的洞察力。
基本代码结构是:
showLoadPopup();
var t = setTimeout(function()
{
parseXML(); // real work
hideLoadPopup();
}, delayTime);
谢谢!
更新: 事实证明解析XML不是Web Workers通常可以做的事情,因为他们无法访问DOM或文档等。所以,为了实现这一点,我实际上在Stack Overflow上找到了一篇关于解析XML的不同文章在Web Worker中。 Check out the page here。
通过将我的XML对象序列化为字符串,然后我可以通过消息文章将其传递给Web Worker,然后使用我在上述链接中找到的仅使用JavaScript的XML解析器将其转换回XML Web Worker中的对象,进行所需的解析,然后将所需的文本作为字符串传回,而不会使浏览器挂起。
答案 0 :(得分:1)
理想情况下,您不必在客户端解析实际导致浏览器挂起的内容。我会考虑将此移动到一个ajax请求,该请求将部分解析的xml(子节点作为JSON)拉出来,或者查看使用Web Workers或客户端异步选项。
答案 1 :(得分:0)
这个问题似乎没有“经验法则”,因为它不是问题的最佳解决方案。使用替代方法来完成真正的工作是真正的解决方案,而不是使用setTimeout()
调用来允许对页面进行可视化更新。
鉴于以下选项:
感谢您的建议。