当前位置: 首页 > news >正文

温州网站开发网站的制作百度怎么推广

温州网站开发网站的制作,百度怎么推广,cdr做的网站效果怎么直接用,wordpress设置数字形链接报404在使用 vue vant2.13.2 技术栈的项目中,因为上传文件的接口是单文件上传,当使用批量上传时,只能循环调取接口;然后有校验内容:需要所有文件上传成功后才能保存,在文件上传不成功时点击保存按钮&#xff0c…

在使用 vue + vant@2.13.2 技术栈的项目中,因为上传文件的接口是单文件上传,当使用批量上传时,只能循环调取接口;然后有校验内容:需要所有文件上传成功后才能保存,在文件上传不成功时点击保存按钮,则提示信息:"文件上传未成功!"

我使用 for 循环调取接口,然后定义了 promiseList 数组,循环一次将 promise 对象添加一次,然后使用 Promise.all(promiseList).then(result=>console.log(result)) 来改变保存的状态。但是发现打印出的 result 总是空数组[]。debugger 代码的执行顺序,应该是异步的原因导致的。

如下代码:

/** 上传文件组件 */
<van-uploadername="multipartFile"multiplev-model="jobFileList":after-read="(file) => afterRead(file, jobFileList)"  // 默认写法参数只有file对象,如需传递其他参数则需要此种写法:before-read="(file) => beforeRead(file, jobFileList)":before-delete="(file) => beforeDelete(file, jobFileList)":max-count="9"
>
</van-uploader>

下面上传了一张图片文件格式;如下图,其中 fileId、fileName、fileType、fileUrl 为自定义字段,上传服务器成功后返回的,其他字段为 van-uploader 组件所支持的自有字段。
在这里插入图片描述

/** 上传文件逻辑 */
afterRead(file) {const _this = this;this.isFetchDone = 1; // 文件是否全部上传完成:0是 1否let promiseList = [];if (!Array.isArray(file)) {// 单张图片上传promiseList = [file];} else {// 批量上传promiseList = file;}for (const f of file) {// 压缩文件new Compressor(f.file, {quality: 0.5,success(result) {// blob格式转换为file格式f.file= new File([result], result.name, { type: result.type });const p = _this.uploadFileChange(f);promiseList.push(p);},error(err) {console.warn(err.message);},});}// 使用Promise.all()改变保存状态Promise.all(promiseList).then(result=> {console.log(result);  // []// 所有的文件状态都是"done"则代表文件全部上传完成 const bool = result.every(file => file.status === 'done');if (bool) {// 改变保存状态为0,可保存this.isFetchDone = 0;}})
}
/** 上传文件逻辑 */
uploadFileChange(f) {return new Promise((resolve, reject) => {f.status = "uploading";f.message = "上传中...";// 上传图片要formData类型const formData = new FormData();formData.append("multipartFile", f.file);// 上传文件接口uploadFile(formData).then((response) => {const { data, resultCode, resultMessage } = response;if (resultCode === 0 && data) {f.fileId = data.fileId;f.fileName = data.fileName;f.fileType = data.fileType;f.fileUrl = data.fileUrl;f.status = "done";f.message = "上传完成";resolve(f);} else {f.status = "failed";f.message = "上传失败";reject(resultMessage);}}).catch(err => {f.status = "failed";f.message = "上传失败";reject(err)});})
},

上面代码的执行顺序是,先执行 for 循环,然后直接执行了 Promise.all(),最后执行 promiseList.push();因为 forPromise.all()都是同步代码,所以在 Promise.all(promiseList) 执行时,promiseList 其实是一个空数组,所以 then 最终返回的是一个空数组。

我选择的修改方式是将 for 循环放到了 Promise.all() 中,如下:

afterRead(file) {const _this = this;this.isFetchDone = 1;let promiseList = [];if (!Array.isArray(file)) {// 单张图片上传promiseList = [file];} else {// 批量上传promiseList = file;}/** 可以将 promiseList.map 单独封装成一个函数放在这里(优化代码) */Promise.all(promiseList.map(f => {return new Promise((resolve, reject) => {// 压缩文件new Compressor(f.file, {quality: 0.5,success(result) {// blob格式转换为file格式f.file= new File([result], result.name, { type: result.type });f.status = "uploading";f.message = "上传中...";// 上传图片要formData类型const formData = new FormData();formData.append("multipartFile", f.file);// 上传文件接口uploadFile(formData).then((response) => {const { data, resultCode, resultMessage } = response;if (resultCode === 0 && data) {f.fileId = data.fileId;f.fileName = data.fileName;f.fileType = data.fileType;f.fileUrl = data.fileUrl;f.status = "done";f.message = "上传完成";resolve(f);} else {f.status = "failed";f.message = "上传失败";reject(resultMessage);}}).catch(err => {f.status = "failed";f.message = "上传失败";reject(err);})},error(err) {console.warn(err.message);},});})})).then(result => {const bool= result.every(file => file.status === 'done');if (bool) {this.isFetchDone = 0;}})
},
http://www.hyszgw.com/news/63444.html

相关文章:

  • 台州网站建设公司.扁平化个人网站
  • 昆山周市建设局网站百度云虚拟主机做网站
  • node.js做网站制作伪装网站
  • 网站备案时长制作电子商务网站
  • 内蒙古做网站的公司有哪些discuz图片网站模板
  • framework7做网站一站式做网站哪家好
  • 郑州做网站排名韶关市开发区建设局网站
  • 微网站技术博客新手wordpress
  • 网站项目设计说明书简单炫酷的编程代码
  • 做字幕模板下载网站找片子有什么好的关键词推荐
  • 为网站做一则广告语网站友情链接要加什么
  • 网站怎么做图片文登住房和城乡建设局网站
  • 招聘网站如何做运营团购网站 网上 收费 系统
  • 做搜索网站能发财吗重庆公司网站建设步骤
  • 网站大全全部免费苏州商城网站建设
  • wap电影网站建设百度云视频 wordpress
  • 建网站需要多少钱和什么条件百度账户托管公司
  • 网站都到哪里做推广在建设银行网站上买卖贵金属
  • 连州网站建设做网站游戏都需要什么
  • 用word怎么做首页网站企业微网站案例
  • 网站用单页面框架做简述网站建设的
  • 网站的二维码怎么做的虚拟主机 部署网站吗
  • 做代理网站呼和浩特网站建设价格
  • 郑州网站建设讯息河北省住房和建设厅网站首页
  • 西安网站维护jsp网站开发简单代码
  • 上海浦东医院网站建设网页设计与制作的三个阶段
  • 服务器证书与网站不符怎么给网站在百度地图上做爬虫
  • 康定网站建设公司受欢迎的网站建设案例
  • 公司网站后台登陆加强人社网站建设
  • 合肥企业网站网站开发指什么