async和await 异步处理

 async

1. 它作为一个关键字放在函数前面,用于表示函数是一个异步函数。

2. 返回的是一个promise对象,如果想要获取到promise的值,就要使用then()方法

3. 不可直接使用函数名() 这样的形式调用异步函数,如果要这样使用,需要放在新定义的异步函数体内去调用

created(){
    this.data().then(reslove => {
      console.log(reslove);  // 4
    })
},
medthos(){
    async data() {
      return 1 + 3
    },
}

 

如果函数内部抛出错误,promise对象有个catch方法进行捕获。

 await 

  await关键字要在ansyc函数里面

1. await修饰的如果是promise对象,可以获取到promise中返回的内容(resolve和reject参数),且取到值后语句才会往下执行

2. 如果不是promise对象,把这个非promise的东西当作await表达式的结果

created() {
    this.getA() // 调用
  },
  methods: {
    async getA() {
      let res = await this.getData()
      console.log('111');
      return res
    },
    getData() {
      return new Promise(res => {
        setTimeout(() => {
          res(console.log(2222))
        }, 5000)
      })

    }
  }
// 结果
// 222
// 111

 

await可能失效的两个原因

  1. await后面需要跟一个promise函数或者async函数(async就是promise的语法糖)。他实质上是帮你获取resolve里面的数据。
  2. 你多层嵌套使用await的时候少写了一个await

 

  

 

posted @ 2021-10-25 16:00  小黄花呐  阅读(249)  评论(0编辑  收藏  举报