1

setTimeout()在 javascript 中使用该函数来允许在解析一些 xml 数据时显示“正在加载”的弹出窗口。我发现在足够小的延迟值(低于 10 毫秒)下,在浏览器冻结片刻以执行实际工作之前,它没有时间显示它。在 50 毫秒时,它有足够的时间,但我不知道这将如何转化为其他系统。是否有某种“经验法则”可以规定确保视觉更新而不会造成不必要的延迟所需的延迟量?

显然,这将取决于运行代码的机器等,但我只是想知道是否有任何东西可以比我的猜测提供更多的洞察力。

基本代码结构为:

showLoadPopup();

var t = setTimeout(function()
{
    parseXML(); // real work
    hideLoadPopup();
}, delayTime);

谢谢!

更新:原来解析 XML 不是 Web Workers 通常可以做的,因为他们无权访问 DOM 或文档等。所以,为了实现这一点,我实际上在 Stack Overflow 上找到了另一篇关于在 Web Worker 中解析 XML。在这里查看页面

通过将我的 XML 对象序列化为字符串,然后我可以通过消息发布将其传递给 Web Worker,然后使用我在上述链接中找到的纯 JavaScript XML 解析器,将其转换回Web Worker,进行所需的解析,然后将所需的文本作为字符串传回,而不会使浏览器挂起。

4

2 回答 2

1

理想情况下,您不必在客户端解析实际导致浏览器挂起的内容。我会考虑将此移动到一个 ajax 请求中,该请求会提取部分解析的 xml(子节点为 JSON),或者查看使用Web Worker或客户端异步选项。

于 2013-10-14T21:38:18.110 回答
0

这个问题似乎没有“经验法则”,仅仅是因为它不是解决问题的最佳方法。使用替代方法来完成真正的工作是真正的解决方案,而不是使用setTimeout()调用来允许对页面进行视觉更新。

给定的选项是:

谢谢你的建议。

于 2013-10-14T22:46:37.073 回答