vue 中出现异步 promise&async 和awiat的使用

文章讲述了在项目中遇到的异步问题,即接口调用未完成就执行后续操作。通过引入Promise和使用.then方法确保异步操作完成后执行特定代码。此外,还介绍了使用async/await来更清晰地管理异步流程,以及如何用try-catch处理可能出现的错误。提供了相关博客链接作为详细参考。
摘要由CSDN通过智能技术生成

一、项目中出现异步问题,接口里边的this.queryLinkage()还未执行完,就开始执行this.$parent.handleShow(this.placeList, this.detailedInformation)

在这里插入图片描述

二、解决办法 new promise()

 // 数组对象去重
       unique(arr) {
        const res = new Map();
        return arr.filter((arr) => !res.has(arr.type) && res.set(arr.type,1));
      },
      // 解决办法:return 出去这个new promise ,在调用queryLinkage()这个方法的时候
       			  使用.then方法,.then中的res返回为true的时候,再去执行
     			  this.$parent.handleShow(this.placeList, this.detailedInformation);
    queryLinkage() {
      let result = new Promise((resolve) => {
      getAlarmCap()
        .then((res) => {
          let algsList = []
          res.data.alarm_type_list.forEach((item) => {
            algsList.push(...item.minor_type);
          });
            this.placeList = this.unique(algsList)
            resolve(true)
        })
        .catch(() => {});
      })
      return result
    },
    //点击方法
  handleOpen(record) {
      this.detailedInformation =  record
      this.placeList = [];
    this.queryLinkage().then(()=>{
        this.$parent.handleShow(this.placeList, this.detailedInformation);
      });
    },

三、补充一下,也可以把这个.then换成async 和await

async handleOpen(record) {
      this.detailedInformation =  record
      this.placeList = [];
      await this.queryLinkage()
      this.$parent.handleShow(this.placeList, this.detailedInformation);
    },

四、try catch

   async queryLinkage() {

try{
  let res = await getAlarmCap()
  let algsList = []
  res.data.alarm_type_list.forEach((item) => {
    algsList.push(...item.minor_type);
  });
    this.placeList = this.unique(algsList)
}catch(err){
  console.log(err)
}
}

五、详细参考

  1. https://blog.csdn.net/weixin_44871749/article/details/123621556?spm=1001.2014.3001.5506
  2. https://blog.csdn.net/weixin_47686269/article/details/109624790?spm=1001.2014.3001.5506
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值