Sep
18
2024
js异步加载文件
作者:
绝缘体.. 发布:
2024-09-18 16:06 分类:
未分类 阅读:
抢沙发
js 异步加载文件。
/**
* 定义一个异步函数来加载文件列表
* @param {string[]} fileUrlList - 文件URL列表
* @param {function} onCompleteCallback - 所有文件加载完成后的回调函数
* @param {function} onProgressCallback - 加载进度更新的回调函数 (可选)
* @returns {Promise<void>}
*/
async function loadFiles(fileUrlList, onCompleteCallback, onProgressCallback) {
let loadedFiles = 0; // 已加载的文件数
const totalFiles = fileUrlList.length;
for (let i = 0; i < totalFiles; i++) {
const url = fileUrlList[i];
try {
const response = await fetch(url); // 传入的URL
if (!response.ok) {
throw new Error(`HTTP 错误!状态码:${response.status} - URL: ${url}`);
}
loadedFiles++; // 成功加载文件后计数
// 调用进度回调函数更新进度条
if (onProgressCallback) {
onProgressCallback(loadedFiles, totalFiles);
}
//console.log(`文件 ${i + 1} 下载成功: ${url}`);
} catch (error) {
console.error(`文件 ${i + 1} 加载失败:`, error);
}
}
// 所有文件加载完成后,调用完成回调函数
if (onCompleteCallback) {
onCompleteCallback();
}
}
使用:
const fileUrls = ["https://www.phpernote.com/logo.gif"];
// 更新进度条的函数
function updateProgress(loaded, total) {
const progress = (loaded / total) * 100;
console.log(`加载进度:${progress.toFixed(2)}%`);
}
// 所有文件加载完成后的回调
function allFilesLoaded() {
console.log("所有文件加载完成!");
}
// 调用loadFiles,传入文件列表、完成回调和进度回调
loadFiles(fileUrls, allFilesLoaded, updateProgress);
微信扫一扫,打赏作者吧~