zoukankan      html  css  js  c++  java
  • 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 })
     
  • 相关阅读:
    Git——pull拉取远程指定分支以及push到远程指定分支
    Git——拉取远程主分支到本地新建分支,并关联到对应的远程新分支
    Git——基础学习
    Flutter——侧边二级菜单栏
    Flutter——static, final, const 区别
    Git一些常用的指令
    Flutter——切换页面,如何保持当前页的状态
    Flutter—找不到图片&不显示本地图片
    Android Studio快捷方式
    某iOS APP反抓包分析
  • 原文地址:https://www.cnblogs.com/xubaoer/p/11585297.html
Copyright © 2011-2022 走看看