ES7异步函数解决进程等待相关业务问题
2024-09-07 22:04:14
业务需求场景描述:
在接口只能单一检测的情况下,批量检测资源名称是否存在数据库,如果资源群中某一个资源已存在:给出交互让用户决定是否覆盖资源,最后形成不存在的资源和用户确定覆盖的资源群,进行提交。
业务关键:
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循环
具体牵扯到的知识点有兴趣可以去了解。这里只对当前业务场景进行解释
最新文章
- mysql 判断表字段或索引是否存在,然后修改
- 在Windows上一键编译各种版本的Protobuf
- cocos2dx中帧循环的伪代码实现
- Matplotlib之无GUI时的解决办法
- Apache与Tomcat整合
- shuffle() 函数(转)
- 无法嵌入互操作类型“Microsoft.Office.Interop.Word.ApplicationClass”。请改用适用的接口。
- NoSql 精粹导读图
- 微软RDLC报表打印
- Android AudioPolicyService服务启动过程
- Nhibernate学习教程(1)-- 开篇有益
- 四, 判断语句; 循环; 使用dict和set
- [转载]Oracle之xml的增删改查操作
- django celery redis 定时任务
- IntelliJ IDEA无法更新maven索引
- Servlet(5)—ServletRequest接口和ServletResponse接口
- double,失去精度
- Python 依赖关系
- Open Tools API :IDE Main Menus
- 关于jsonp跨域的 实现
热门文章
- SpringCloud系列使用Eureka进行服务治理
- 学习python的几个资料网站
- Jmeter 中 CSV 如何参数化测试数据并实现自动断言
- Python Tuple(元组) tuple()方法
- Python os.fstat() 方法
- Python List insert()方法
- PHP password_get_info() 函数
- 7.18 NOI模拟赛 树论 线段树 树链剖分 树的直径的中心 SG函数 换根
- 已解决:Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986 问题
- 说说Spring中的 @RestController 和 @Controller