在JavaScript中实现异步加载进度条,通常涉及到几个基础概念和技术:
以下是一个使用Fetch API和async/await实现的简单线性进度条示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>异步加载进度条</title>
<style>
#progress-bar {
width: 0%;
height: 20px;
background-color: #4caf50;
}
</style>
</head>
<body>
<div id="progress-bar"></div>
<button onclick="loadData()">加载数据</button>
<script>
async function loadData() {
const progressBar = document.getElementById('progress-bar');
let progress = 0;
// 模拟异步加载过程
const total = 100;
for(let i = 0; i <= total; i++) {
await new Promise(resolve => setTimeout(resolve, 50)); // 模拟网络延迟
progress = i;
progressBar.style.width = progress + '%';
}
alert('数据加载完成!');
}
</script>
</body>
</html>
setTimeout
)来减慢进度更新的频率。alert('数据加载完成!')
。在实际应用中,如果涉及到真实的文件上传或下载,可以使用XMLHttpRequest
的progress
事件来获取更精确的加载进度。对于Fetch API,可能需要额外的逻辑来估计进度,因为它本身不提供进度事件。
领取专属 10元无门槛券
手把手带您无忧上云