Promise.all结合数组Map用法
Promise.all(iterable)
方法返回一个 Promise
实例,此实例在 iterable
参数内所有的 promise
都“完成(resolved)”或参数中不包含 promise
时回调完成(resolve);
如果参数中 promise
有一个失败(rejected),此实例回调失败(reject),失败原因的是第一个失败 promise
的结果。
即每一个iterable都是一个函数表现方式
1 getuseracl(resultes,objectId) { 2 var Roles = Parse.Object.extend("_Role"); 3 var roles = new Parse.Query(Roles); 4 roles.get(objectId).then(res => { 5 var relation = res.relation("menus"); 6 resultes.set("objectId", this.objectId); 7 relation.add(resultes); 8 res.save().then(result => {}); 9 }); 10 }, 11 12 13 Promise.all([ 14 this.MenuForm.roles.map(items => this.getuseracl(resultes,items)) 15 ]).then(data => { 16 this.$message({ 17 message: "修改成功", 18 type: "success" 19 }); 20 这种写法也会执行,但是是会全部执行,中间如果有错误也会返回全部成功。 21 个人理解:因为this.getuseracl()是一个函数,而Promise.all的参数为多个函数,所以会一并执行 22 正确的写法应该是 23 var arr=[] 24 this.MenuForm.roles.map(items=>{ 25 arr.push( 26 new Promise((resolve,reject)=>{ 27 var Roles = Parse.Object.extend("_Role"); 28 var roles = new Parse.Query(Roles); 29 roles.get(items.id).then(res => { 30 var relation = res.relation("menus"); 31 resultes.set("objectId", this.objectId); 32 relation.add(resultes); 33 res.save().then(result => { 34 resolve(result) 35 },error=>{ 36 reject(error) 37 }); 38 }); 39 40 }) 41 ) 42 }) 43 Promise.all(arr).then(data=>{ 44 //成功 45 }).catch(error=>{ 46 失败 47 })
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术