我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,进行所需的解析,然后将所需的文本作为字符串传回,而不会使浏览器挂起。