async 和 await使用的介绍

async 和 await的使用

1、先看实际开发中的代码。

const getList = async () => {
      try {
      //这里是一个axios 请求 getWorkList是请求的api
        const sd = await proxy.$api.getWorkList({
          work_id: proxy.$route.query.work_id
        })
        data.creatorList = sd //获取到后台返回的数据
      } catch (err) {
        console.log(err)
      }
    }

2、为什么要用async 和 await
是为了使异步的调用 像同步一样来执行。以同步的写法实现异步调用。

3、async做了什么
async函数会返回一个promise,并且Promise对象的状态值是成功的。
如果在async函数中没有写return,那么Promise对象resolve的值就是是undefined。
反之返回值就是你return的值。另外await只能放在async函数里。

4、await 做了什么
await会阻塞后面的代码,等待async执行结果。async 表达式的结果,就是await要等的东西。
async的结果有两种:
是promise
假如 promise 成功了,然后把 resolve 的参数作为 await 表达式的运算结果。
假如 promise 失败了,对await来说就算是失败了,下面的代码就不会执行。
不是promise:把这个非promise的东西,作为 await表达式的结果。

5、下面写个简单的代码执行一下。

function fn(){
    return new Promise(resolve=>{
        console.log(1)
    })
}
async function f1(){
    await fn()
    console.log(2)
}
f1()
console.log(3)
//1
//3
//因为没有resolve结果,所以await拿不到值,因此不会打印2
function fn(){
    return new Promise(resolve=>{
        console.log(1)
        resolve()
    })
}
async function f1(){
    await fn()
    console.log(2)
}
f1()
console.log(3)
//1
//3
//2
//这个代码与前面相比多了个resolve说明promise成功了,所以await能拿到结果,因此就是1 3 2

写在最后:在日常项目开发中,有需要使用同步的时候,使用async 和 await配合,可以实现异步代码同步执行的效果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值