VUE中async/await的使用!

简介

  • async/await是ES7引入的新语法,可以更加方便的进行异步操作
  • async关键词用于函数上(async函数的返回值是Promise实例对象)
  • await关键子用于async函数当中(await可以得到异步的结果)

简单示例

async function getData(id) {
    const ret = await axios.get('/mydata');
    return ret;
}
getData.then(ret=>{
    console.log(ret)
})

async 函数

async 关键字用于声明一个异步函数。这意味着这个函数总是返回一个Promise,无论函数体内是否使用了 return 语句。如果 return 了一个值,这个值会被自动包装成一个解决(resolved)的Promise。如果函数抛出一个错误,则返回一个拒绝(rejected)的Promise。

async function fetchData() {
  // ...
  return data; // 返回的数据会被包装成一个Promise
}

await 表达式

await 关键字用于等待一个Promise完成。它只能在 async 函数内部使用。当 await 用于一个Promise时,它会暂停当前 async 函数的执行,直到Promise解决(或者拒绝),然后返回解决的结果(或者抛出错误)。

async function fetchData() {
  const response = await fetch(url); // 等待fetch请求完成
  const data = await response.json(); // 等待JSON解析完成
  return data;
}

生命周期钩子中的使用

export default {
  async created() {
    try {
      const data = await this.fetchData();
      this.someData = data;
    } catch (error) {
      console.error("Error fetching data:", error);
    }
  },
  methods: {
    async fetchData() {
      const response = await fetch('some-api-url');
      return await response.json();
    }
  }
}

方法中的使用

export default {
  methods: {
    async fetchData() {
      try {
        const response = await fetch('some-api-url');
        const data = await response.json();
        this.someData = data;
      } catch (error) {
        console.error("Error fetching data:", error);
      }
    }
  }
}

注意事项

使用 async 和 await 可以让异步代码的写法更接近同步代码,使得代码更加清晰和易于理解。但是,请记住以下几点:

  • await 只能在 async 函数中使用。
  • 当 await 用于一个非Promise值时,它会简单地返回该值。
  • 如果 await 后面的Promise被拒绝,它将抛出一个错误,通常需要用 try...catch 语句来捕获和处理这个错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值