vue中使用Element UI的$confirm ,如何在其.then() 方法后执行一个异步方法。

如下所示,在点击删除的确认按钮的时候调后台的api进行删除操作。

clipboard.png

confirmDelete(){
    let self=this;
    let idarr=self.mulId;
    let params={
        "profileId":idarr
    };
    return new Promise((resolve,reject)=>{
        api.deleteProFile(params).then(res=>{
            if(res.errMsg=="Success"){
                console.log("删除成功!");
            }
            resolve(res.errMsg);
        })
   })    
},
async deleteProfiles(){
    let self=this;
    let data=self.mulSection;
    let flag=false;
    let msg='当前勾选条件中包含已启用的条件, 是否继续?';
    data.forEach(item=>{
        self.mulId.push(item.id);
    })
    this.$confirm(msg, '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
        }).then(() => {
            let msgRet=await self.confirmDelete();
            if(msgRet=="Success"){
                self.notify("删除成功!","success",1000);
            }
            else{
                self.notify("删除失败!","warning",1000);
            }
        }).catch(() => {
            console.log("cancel");
    });
},

但是每次点玩确定按钮都走的是catch 部分。然后也并没有执行.then()中的内容。目前想在这个.then() 方法中执行调后台api的删除方法这里该怎么写。

阅读 38k
2 个回答
.then(async () => { //  不要忘记加 async
            let msgRet= await self.confirmDelete();
            if(msgRet=="Success"){
                self.notify("删除成功!","success",1000);
            }
            else{
                self.notify("删除失败!","warning",1000);
            }
        })

楼主,你好~
代码里存在些问题,试试下面:

async deleteProfiles(){
    let self=this;
    let data=self.mulSection;
    let flag=false;
    let msg='当前勾选条件中包含已启用的条件, 是否继续?';
    data.forEach(item=>{
        self.mulId.push(item.id);
    })
    this.$confirm(msg, '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
        }).then(async () => { // 这里加个 async,可以查下相关文档 async...await
            let msgRet=await self.confirmDelete();
            if(msgRet=="Success"){
                self.notify("删除成功!","success",1000);
            }
            else{
                self.notify("删除失败!","warning",1000);
            }
        }).catch(() => {
            console.log("cancel");
    });
},
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏