业务需求场景描述:

在接口只能单一检测的情况下,批量检测资源名称是否存在数据库,如果资源群中某一个资源已存在:给出交互让用户决定是否覆盖资源,最后形成不存在的资源和用户确定覆盖的资源群,进行提交。

业务关键:

1,单一检测存在异步操作

2,用户决定是否覆盖已存在资源,则需要程序等待效果

业务实现(基于Element-ui的$confirm确认消息提示组件):

/**
* 使用ES7的异步函数解决进程等待问题
* @param resourceArray 待检测资源群[name1,name2]
* @returns [] 返回检测结果(不存在的资源和用户确认需要覆盖的资源)
*/
const loopCheckResName=async (resourceArray)=>{
let resultRes=[];
for(let i =0,len=resourceArray.length;i<len;i++){
const curResName=resourceArray[i];
const response=await this.$api.checkName(curResName);
if(response.code===404){
resultRes.push(curResName);
}else{
try{
//这里会阻塞for循环,待用户确认
await this.$confirm(`资源${curResName}已存在,是否覆盖?`);
resultRes.push(curResName);
}catch(e){
console.log("用户放弃了覆盖")
} }
}
return []
}

这里可能会有两个疑问:

1,为什么使用for循环,不使用forEach或者every?

2,为什么在循环提示时使用try...catch进行异常处理?

回答:

1,因为forEach和every内部的回掉函数本身是异步的

2,异步函数的异常只能使用try来进行处理,如果不进行异常处理将不会进入下一次循环,而是直接退出了for循环

具体牵扯到的知识点有兴趣可以去了解。这里只对当前业务场景进行解释

最新文章

  1. mysql 判断表字段或索引是否存在,然后修改
  2. 在Windows上一键编译各种版本的Protobuf
  3. cocos2dx中帧循环的伪代码实现
  4. Matplotlib之无GUI时的解决办法
  5. Apache与Tomcat整合
  6. shuffle() 函数(转)
  7. 无法嵌入互操作类型“Microsoft.Office.Interop.Word.ApplicationClass”。请改用适用的接口。
  8. NoSql 精粹导读图
  9. 微软RDLC报表打印
  10. Android AudioPolicyService服务启动过程
  11. Nhibernate学习教程(1)-- 开篇有益
  12. 四, 判断语句; 循环; 使用dict和set
  13. [转载]Oracle之xml的增删改查操作
  14. django celery redis 定时任务
  15. IntelliJ IDEA无法更新maven索引
  16. Servlet(5)—ServletRequest接口和ServletResponse接口
  17. double,失去精度
  18. Python 依赖关系
  19. Open Tools API :IDE Main Menus
  20. 关于jsonp跨域的 实现

热门文章

  1. SpringCloud系列使用Eureka进行服务治理
  2. 学习python的几个资料网站
  3. Jmeter 中 CSV 如何参数化测试数据并实现自动断言
  4. Python Tuple(元组) tuple()方法
  5. Python os.fstat() 方法
  6. Python List insert()方法
  7. PHP password_get_info() 函数
  8. 7.18 NOI模拟赛 树论 线段树 树链剖分 树的直径的中心 SG函数 换根
  9. 已解决:Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986 问题
  10. 说说Spring中的 @RestController 和 @Controller