不是 我是说/ 判断有没有需要上传的图片数组 if (chooseImgs.length != 0) { chooseImgs.forEach((v, i) => { wx.uploadFile({ // 图片要上传到哪里 url: 'https://images.ac.cn/Home/Index/UploadAction/', // 被上传的文件的路径 filePath: v, // 上传的文件的名称 后台来获取文件 file name: "file", // 顺带的文本信息 formData: {}, success: (result) => { console.log(result); let url = JSON.parse(result.data).url; this.UpLoadImgs.push(url); // 所有的图片都上传完毕了才触发 if (i === chooseImgs.length - 1) { //关闭正在等待的提示 wx.hideLoading(); console.log("把文本的内容和外网的图片数组 提交到后台中"); // 提交都成功了 // 重置页面 this.setData({ textVal: "", chooseImgs: [] }) // 返回上一个页面 wx.navigateBack({ delta: 1 }); } } }); }) } 这个图片提交功能用hbuilderx的vue要怎么改并且跟上面的合并在一块
时间: 2024-02-05 11:03:19 浏览: 65
Parallel.ForEach的卡死现象(线程操作问题C#源码实例)
抱歉,我之前的回答理解错误。在 HBuilderX 的 Vue 项目中,你可以按照以下方式修改图片提交功能并与上面的代码合并:
```javascript
// 判断有没有需要上传的图片数组
if (this.chooseImgs.length !== 0) {
const promises = this.chooseImgs.map((v, i) => {
return new Promise((resolve, reject) => {
wx.uploadFile({
// 图片要上传到哪里
url: 'https://images.ac.cn/Home/Index/UploadAction/',
// 被上传的文件的路径
filePath: v,
// 上传的文件的名称 后台来获取文件 file
name: "file",
// 顺带的文本信息
formData: {},
success: (result) => {
console.log(result);
let url = JSON.parse(result.data).url;
this.UpLoadImgs.push(url);
// 所有的图片都上传完毕了才触发
if (i === this.chooseImgs.length - 1) {
// 关闭正在等待的提示
wx.hideLoading();
console.log("把文本的内容和外网的图片数组提交到后台中");
// 提交都成功了
// 重置页面
this.textVal = "";
this.chooseImgs = [];
// 返回上一个页面
wx.navigateBack({
delta: 1
});
}
resolve();
},
fail: (error) => {
reject(error);
}
});
});
});
Promise.all(promises)
.then(() => {
// 所有图片上传完成后执行的逻辑
})
.catch((error) => {
// 处理上传失败的逻辑
});
} else {
// 没有需要上传的图片时直接执行其他逻辑
// ...
}
```
在上述代码中,我们使用 `Promise.all()` 方法来等待所有图片上传完成后执行后续逻辑。通过将每个上传操作封装成 Promise 对象,在 `Promise.all()` 中等待所有 Promise 执行完毕后执行后续逻辑。
希望这样的修改可以满足你的需求。如果还有其他问题,请随时提问。
阅读全文