const handleUpload = () => { const uploadingCount = ref(0); fileList_1.value.forEach((item, index) => { const formData = new FormData(); formData.append("file", item.originFileObj); console.log(`第 ${index + 1} 个文件上传`, item.name); uploadingCount.value = uploadingCount.value + 1 console.log('uploadingCount >>>', uploadingCount.value) console.log('开始 { if (response.status === 500) { console.error(`第 ${index + 1} 个文件上传失败:`, response.data); message.error(response.data.message); } else { responseBody.value = response.data; responseData.value = response.data; message.success(item.name + " 上传成功", 2); } }) .catch((error) => { console.error('捕捉到错误了', error); message.error(error.response.data.message); }) .finally(() => { console.log('>> 上传图片完成'); uploadingCount.value = uploadingCount.value - 1; }); // break; console.log('结束>>'); // } }) console.log('上传结束') console.log('uploadingCount >>>>>>>>', uploadingCount.value) }; 按理来说,我的 fileList_1 里面有几个元素,finally 里面的 `console.log('>> 上传图片完成');` 就应该输出多少次 但是实际是,不管 我的 fileList_1 里面有几个元素,finally 里面的 `console.log('>> 上传图片完成');` 只输出一次, 但是确实发出了 n 个 HTTP POST 请求  完整代码如下: 使用说明: 选择图片 评分范围在 0-100 分,100 分是满分。如果图片相似度太小,会出现负分 --> 选择图片 上传 {{ item.hash_code }} --> import { PlusOutlined, LoadingOutlined } from "@ant-design/icons-vue"; import { ref, reactive } from "vue"; import { message } from "ant-design-vue"; import { UploadOutlined } from "@ant-design/icons-vue"; import axios from "axios"; import { onMounted } from "vue"; import router from "@/router"; onMounted(async () => { document.title = "图片录入"; // 设置浏览器标签页的标题 }); function getBase64(file) { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = () => resolve(reader.result); reader.onerror = (error) => reject(error); }); } const fileList_1 = ref([]); const handleBeforeUpload1 = (file) => { // fileList_1.value.splice(0); return false; // 阻止默认上传行为 }; const previewVisible = ref(false); const previewImage = ref(""); const previewTitle = ref(""); const handleCancel = () => { previewVisible.value = false; previewTitle.value = ""; }; const handlePreview = async (file) => { if (!file.url && !file.preview) { file.preview = await getBase64(file.originFileObj); } previewImage.value = file.url || file.preview; previewVisible.value = true; previewTitle.value = file.name || file.url.substring(file.url.lastIndexOf("/") + 1); }; const responseBody = ref(null); const responseData = ref([]); function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } const handleUpload = () => { const uploadingCount = ref(0); fileList_1.value.forEach((item, index) => { const formData = new FormData(); formData.append("file", item.originFileObj); console.log(`第 ${index + 1} 个文件上传`, item.name); uploadingCount.value = uploadingCount.value + 1 console.log('uploadingCount >>>', uploadingCount.value) console.log('开始 { if (response.status === 500) { console.error(`第 ${index + 1} 个文件上传失败:`, response.data); message.error(response.data.message); } else { responseBody.value = response.data; responseData.value = response.data; message.success(item.name + " 上传成功", 2); } }) .catch((error) => { console.error('捕捉到错误了', error); message.error(error.response.data.message); }) .finally(() => { console.log('>> 上传图片完成'); uploadingCount.value = uploadingCount.value - 1; }); // break; console.log('结束>>'); // } }) console.log('上传结束') console.log('uploadingCount >>>>>>>>', uploadingCount.value) }; const navigateToRoot = () => { router.push("/"); }; body { background-color: #e9ecef !important; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .gray-placeholder { color: gray; } .container { margin: 0 auto; /* 居中显示 */ margin-top: 20px; max-width: 1440px; /* 设置最大宽度为900px */ background-color: #ffffff; /* 浅灰色 */ border-radius: 0.25rem; } .container-item { padding: 25px; border-width: 0 0 1px; margin-bottom: 20px; } .theme-icon { width: 64px; /* 设置图标的宽度 */ height: 64px; /* 设置图标的高度 */ } .avatar-uploader>.ant-upload { width: 128px; height: 128px; } .ant-upload-select-picture-card i { font-size: 32px; color: #999; } .ant-upload-select-picture-card .ant-upload-text { margin-top: 8px; color: #666; }