实现简易进度条

248 阅读1分钟

经常我们在网上下载文件的时候,一到 99% 就会卡得很久不动,还会以为是我们网络的问题

其实,我们在网上看到的进度条可能不一定是真的实际下载进度,只是对实际进度的一个模拟

因为如果要进行实际的进度计算,我们要从后台通过网络请求去获取到实际包大小,传输中再进行实时的计算,等到实际获取传输完毕渲染后再计算完成,其中就会非常的损耗性能并且加大了代码的复杂度

我们实际可以利用进度条元素,进行下载的模拟,然后通过一些时间逻辑控制来显示进度,最后再根据是否下载完成达到 100%

首先先写实现一个简易的进度条:

HTML

<progress id="file" max="100" value="0"></progress>
<p>下载进度<span id="current">0</span>%</p>

JS

let file = document.querySelector("#file");
let current = document.querySelector("#current");

setInterval(() => {
  let num = file.value += 1;
  current.innerText = num;
}, 500)

会实现类似以下的效果: