ES6之Promise解决VUE中异步传值问题

背景:

         在使用vue开发页面时,调用 checkWorkflow()方法时无法获取到该方法的返回值

Promise 对象用于表示一个异步操作的最终状态(完成或失败),以及其返回的值。

语法:

        new Promise( function(resolve, reject) {...} /* executor */ );

案例:

   修改前:

JS代码:  

 export function checkWorkflow(modelId,routeName,userId){
 
        let url = `${lz}/mtwf/provingBindingWf`;
        let data = {
                modelId  : modelId,
                routeName : routeName,
                userId : userId,
            }
         post(url,data).then(retData =>{
            if(retData.returnCode != 1){
                Notification({
                     title: "消息",
                     message: "检查 工作流失败,请联系技术服务部",
                     type: "info"
                });
            }
                return retData.returnData;
         })
    }

 .VUE代码:    无法获取到返回值  retData=undefined

//调用 checkWorkflow方法
callCheckWorkflow(){
            let modelId = this.modelId;
            let routeName = this.routeName;
            let userId = this.userInfo.userId;
            let returnData = this.$checkWorkflow(modelId,routeName,userId);
            console.log('返回值   returnData='+returnData);
            if(returnData != true){
                this.disabled = true;
                this.$notify({
                    title: "消息",
                    message: "该申请未在工作流中,请联系管理员",
                    type: "info"
                });
            }
}

 修改后:

  JS代码:

 export function checkWorkflow(modelId,routeName,userId){
 
        return new Promise((resolve, reject)=>{
            let url = `${lz}/mtwf/provingBindingWf`;
            let data = {
                modelId  : modelId,
                routeName : routeName,
                userId : userId,
            }
            post(url,data).then(retData =>{
                if(retData.returnCode != 1){
                    Notification({
                        title: "消息",
                        message: "检查 工作流失败,请联系技术服务部",
                        type: "info"
                    });
                }
                resolve(retData.returnData);
            })
        });
    }

 .VUE代码:        返回值  retData='OK'

 //调用 checkWorkflow方法
callCheckWorkflow(){
    this.$checkWorkflow(this.modelId,this.routeName,this.userInfo.userId).then(retData=>{
           console.log('函数返回值 retData='+retData);

           if(retData ==''){
               this.disabled = true;
           }else if(retData != 'OK'){
               this.disabled = true;
               this.$notify({
                    title: "消息",
                    message: "该申请未在工作流中,请联系管理员",
                    type: "info"
               });
            }
    });
}

 ES6官网查询到的:https://github.com/ruanyf/es6tutorial/search?utf8=%E2%9C%93&q=Promise

参考网址:https://baijiahao.baidu.com/s?id=1596005633332556077&wfr=spider&for=pc

VUE创建全局函数: https://blog.csdn.net/qq_42715494/article/details/87990879

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值