【发布时间】:2017-10-30 23:49:36
【问题描述】:
我想在我的 JavaScript 应用程序执行一些初始化时显示一个不确定的进度条,例如使用 fetch api 下载 JSON 对象。不幸的是,任何活动都会冻结 Gnome 3.16.4 上 Firefox 52 64 位的进度条,这可能会导致我的用户在假设应用程序崩溃时重新加载。
作为 MWE,我使用许多 console.log 调用来模拟初始化,这也会导致进度条被阻塞:
<html>
<head><meta charset="utf-8"></head>
<body style="width:99%;height:1000px;">
<progress style="width:99%;position:absolute;top:50%;height:20px;"></progress>
<script>
for(i=0;i<100000;i++) {console.log("nop");}
</script>
</body>
</html>
如何在活动期间实现解冻进度条?
【问题讨论】:
-
你可能想要web workers
-
当浏览器忙碌时它不会重绘,你需要每隔一段时间添加一个小延迟,以便可以重绘进度条,尝试做 10 批 10000,每次之间有一个短暂的超时
-
@NickA MWE 只是我的真实用例的模拟,它使用的 JavaScript 提取 API 会产生同样的问题。
-
@OvidiuDolha 谢谢,我会试试 Web Workers!
标签: javascript html progress-bar