在一个for循环中对同一接口调用多次,如何保证逐步执行,同步执行。

  1. html部分
  2. <DcFileUpload
  3. v-for="(item, index) of fileLengthList"
  4. :key="index"
  5. ref="fileUploadData">
  6. </DcFileUpload>
  1. DcFileIliad组件部分
  1. //slot 标签就是为了备用留坑,如果用户需要在组件中增加节点就可以了,类似于插座功能
  1. <template>
  2. <div>
  3. <div class="form-unit form-upload" style="display:inline-block">
  4. <Input
  5. v-model="fileName"
  6. class="tc-15-input-text m"
  7. disabled
  8. :placeholder="placeholder" />
  9. <a class="tc-upload-btn" title="选择文件">
  10. <div class="file-input-wrap">
  11. <input
  12. ref="input"
  13. type="file"
  14. name="file"
  15. :accept="accept"
  16. style="z-index:999"
  17. @change="handleFileChange" />
  18. <span>选择文件</span>
  19. </div>
  20. </a>
  21. <slot></slot>
    </div>
  22. </div>
  23. </template>
  24.  
  25. <script>
  26. import { mapActions } from 'vuex';
  27. import DcUploadHelper from '@/common/utils/dcUploadHelper';
  28.  
  29. export default {
  30. props: {
  31. directoryId: {
  32. type: String,
  33. default: '',
  34. },
  35. accept: {
  36. type: String,
  37. default: '',
  38. },
  39. placeholder: {
  40. type: String,
  41. default: '还未选择文件',
  42. },
  43. },
  44. data() {
  45. return {
  46. fileName: '', // 文件名
  47. files: [],
  48. };
  49. },
  50. methods: {
  51. ...mapActions('algorithm', [
  52. 'CreateUploadJob'
  53. ]),
  54. handleFileChange(e) {
  55. const { files } = e.target;
  56. if (files[0] && files[0].name && files[0].size > 0) {
  57. this.fileName = files[0].name;
  58. this.files = files;
  59. } else {
  60. this.fileName = '';
  61. this.files = null;
  62. }
  63. },
  64. handleFileDelete() {
  65. this.fileName = '';
  66. this.files = [];
  67. },
  68. upload() {
  69. return new Promise(async (resolve, reject) => {
                这里一般写请求方法,向后台发送数据请求
  70.             resolve(status)或reject(status);
  71. });
  72. });
  73. },
  74. cancelUpload() {
  75. this.showUploadModel = false;
  76. DcUploadHelper.stopChunkUpload();
  77. },
  78. hasFile() {
  79. return this.fileName !== '';
  80. }
  81. }
  82. };
  83. </script>
  84.  
  85. <style lang="less">
  86. </style>

上面代码写了,ref如何在数组中使用,一般都是直接写一个ref对象就能获取到整个循环的对象节点数组,就能按下标读取了

  1. js 部分
  2. async handleSubmitForm() {
  3. // 拿到对应的对象数组
  4.   const { fileUploadData } = this.$refs;
  5.   for (let index = 0; index < fileUploadData.length; index++) {
  6.     const element = fileUploadData[index];
  7.     const ret = await element.upload();
  8.     cosnole.log(ret);
  9.   }
  10. }

上面代码的 async 和 await可以保证多次调用同一接口,按链式调用,上一次接口请求数据回包后才进行下次调用

前端vue项目js中怎么保证链式调用后台接口的更多相关文章

  1. vue项目webpack中Npm传递参数配置不同域名接口

    项目开发中,前端在配置后端api域名时很困扰,常常出现:本地开发环境: api-dev.demo.com测试环境: api-test.demo.com线上生产环境: api.demo.com, 这次是 ...

  2. 团队开发前端VUE项目代码规范

    团队开发前端VUE项目代码规范 2018年09月22日 20:18:11 我的小英短 阅读数 1658   一.规范目的: 统一编码风格,命名规范,注释要求,在团队协作中输出可读性强,易维护,风格一致 ...

  3. vue cli 中关于vue.config.js中chainWebpack的配置

    Vue CLI  的官方文档上写:调整webpack配置最简单的方式就是在vue.config.js中的configureWebpack选项提供一个对象. Vue CLI 内部的 webpack 配置 ...

  4. 前端Vue项目——登录页面实现

    一.geetest滑动验证 geetest官方文档地址:https://docs.geetest.com/ 产品——极速验证:基于深度学习的人机识别应用.极验「行为验证」是一项可以帮助你的网站与APP ...

  5. webpack 创建vue项目过程中遇到的问题和解决方法

    目录 1 webpack简介 2 webpack实现多个输入输出多个html 3  webpack 中的module下rules 下的use和loader选项 4 webpack 文件更新,如何使页面 ...

  6. 前端Vue项目——首页/课程页面开发及Axios请求

    一.首页轮播图 1.elementUI走马灯 elementUI中 Carousel 走马灯,可以在有限空间内,循环播放同一类型的图片.文字等内容. 这里使用指示器样式,可以将指示器的显示位置设置在容 ...

  7. Vue项目实践中的功能实现与要点

    本贴记录项目实践中,各种功能的实现与技术要点,均有待改进. 路由切换的时候,显示loading动画 目前方案是: 在每个页面都手动装载一个loading组件组件的显示依赖vuex里面的一个值 , 在r ...

  8. 前端Vue项目——购物车页面

    一.加入购物车的两种策略 1.加入购物车接口 在 src/restful/api.js 中写入添加购物车接口: // 加入购物车的接口 export const shopCart = (params) ...

  9. 前端Vue项目——初始化及导航栏

    一.项目初始化 创建webpack模板项目如下所示: MacBook-Pro:PycharmProjects hqs$ vue init webpack luffy_project ? Project ...

随机推荐

  1. 版本管理·玩转git(推到远程仓库)

    经过前面的练习,你在本地的仓库里管理代码已经比较熟练了,但如果是团队开发呢,如何配合起来呢? 我们可以把版本仓库放在互联网上,开发者把自己最新的版本推到线上仓库,同时,把线上仓库的最新代码拉到自己本地 ...

  2. 算法基础:BFS和DFS的直观解释

    算法基础:BFS和DFS的直观解释 https://cuijiahua.com/blog/2018/01/alogrithm_10.html 一.前言 我们首次接触 BFS 和 DFS 时,应该是在数 ...

  3. MySQL通过SHOW TABLE STATUS查看库中所有表的具体信息

    有时候我们想看下指定库下所有表的使用情况,比如,查询表的Table大小,什么时候创建的,数据最近被更新的时间(即最近一笔insert/update/delete的时间).这些信息对我们进行库表维护很有 ...

  4. Pwnable-leg

    Download : http://pwnable.kr/bin/leg.c Download :http://pwnable.kr/bin/leg.asm 友链 https://blog.csdn. ...

  5. Keras:

    https://keras.io/zh/layers/core/ keras使用稀疏输入进行训练 2018.06.14 12:55:46字数 902阅读 760 稀疏矩阵 稀疏矩阵是指矩阵中数值为0的 ...

  6. ResultMap(还没细看)

    前言 MyBatis是基于“数据库结构不可控”的思想建立的,也就是我们希望数据库遵循第三范式或BCNF,但实际事与愿违,那么结果集映射就是MyBatis为我们提供这种理想与现实间转换的手段了,而res ...

  7. springboot集成freemarker属性配置(不知道是针对于某个版本,2.0后有变动)

    freemarker属性配置 freemarker属性配置: spring.freemarker.allow-request-override=false # 设置是否允许HttpServletReq ...

  8. Alpha冲刺(1/4)

    队名:天码行空 组长博客连接 作业博客连接 团队燃尽图(共享): GitHub当日代码/文档签入记录展示(共享): 组员情况: 组员1:卢欢(组长) 过去两天完成了哪些任务:SVN管理工具搭建 展示G ...

  9. 面向对象软件构造 (Bertrand Meyer 著)

    Part A: The Issues 议题 第一章 软件品质 第二章 面向对象的标准 Part B: The Road To Object Orientation 通向面向对象之路 第三章 模块性 第 ...

  10. 2019 SDN上机第4次作业

    1. 解压安装OpenDayLight控制器(本次实验统一使用Beryllium版本) 配置java环境 安装OpenDayLight控制器 2. 启动并安装插件 cd distribution-ka ...