【发布时间】:2019-05-18 01:34:47
【问题描述】:
我正在创建一个程序,其中 JavaScript 正在处理大量数据,所以我想在进度条上显示进度。
问题来了:在for循环运行的时候,进度条没有更新,然后马上就满了。
document.getElementById("start").addEventListener("click",function(){
max=1000000
document.getElementById("pb").max=max
for(i=0;i<max;i++){
document.getElementById("pb").value=i+1
}
console.log("Finished")
})
<progress id="pb" value="0" max="0"></progress>
<input type="button" id="start" value="Start"/>
我该如何解决这个问题?
如果没有它们可能的话,我不想使用任何 JS 库。
感谢您的帮助!
【问题讨论】:
-
你阻塞了 Javascript UI 线程,所以它永远没有机会更新 UI。您需要异步执行此操作。
-
@Keith 我怎样才能做到异步?
-
您使用进度条的目的是什么,例如以 60 fps 的速度更新 UI,执行一百万次 UI 更新将需要 4 个半小时以上。
标签: javascript for-loop dom