vue在一个方法执行完后执行另一个方法

博主在项目中遇到前端请求后台接口数据时,未请求成功就赋值的问题。尝试用promise解决未成功,最终决定将axios异步机制改装成同步机制,使用async/await实现,解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近期做一个项目遇到一点问题 :前端请求后台接口数据 请求完成后 ,将请求到的数据进行赋值,但是在没有请求成功的时候就已经赋了值 ,后来就想到将请求方法执行完毕以后再进行赋值就查找资料,后来大部分解决都用promise就解决的

解决方法实例如下:

function2(){
    // 你的逻辑代码 
    return Promise.resolve(/* 这里是需要返回的数据*/)
}

function3(){
    // 你的逻辑代码 
    return Promise.resolve(/* 这里是需要返回的数据*/)
}

// 调用
function1(){
    this.function2().then(val => { 
        this.function3();
    });
}

但是我用如上方法测试了一下发现,还是没能实现  

接下来就只能用一个办法了:就是将请求后台接口的方法axios异步机制改装成同步机制进行实现

async/await 用法

     (注意:axios用法)

创建方法时:

async function BtnShow(menuId) {
  //按钮初始化
  for (let x in Btns) {
    Btns[x] = false;
  }
  
  var roleId = localStorage.getItem("roleId");

  let res = await axios
    .post(
      baseURL + "/*****/*****",
      qs.stringify({
        Role: roleId,
        Menu: menuId
      }),
      {}
    )
  var bdata = res.data;
  console.log(res.data);
  for (var i = 0; i < bdata.length; i++) {
    if (bdata[i].operationCode == "add") {
      Btns.add = true;
    }
    if (bdata[i].operationCode == "query") {
      Btns.query = true;
    }
  }
}

调用方法时:

async created(){
    var menuId = this.$route.query.menuId;
    await this.GLOBAL.BtnShow(menuId); 
  },

这样就可以解决我的问题了,,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值