async和await

  • async函数会返回一个promise,并且promise对象的状态是resolved(成功的)
    • 如果你没有在async函数中写return,那么Promise对象resolve的值就是是undefined
      在这里插入图片描述
    • 如果你写了return,那么return的值就会作为你成功的时候传入的值
      在这里插入图片描述
  • 如果asycn里的代码都是同步的,那么这个函数被调用就会同步执行
    async function fn(){
      console.log('a')
    }
    fn()
    console.log('b')
    //a
    //b
    
  • async 代码块里的如果有await,且await所标记的异步函数有resolve结果,按照await的顺序执行;async代码块外,正常按照同步代码执行
    function fn(){
        return new Promise(resolve=>{
            console.log(1)
        })
    }
    async function f1(){
        await fn()
        // 没有拿到resolve结果,所以不执行
        console.log(2)
    }
    f1()
    console.log(3)
    //1
    //3
    ——————————————————————————————————————————
    // 首先执行f1(),内部第一句await fn (),因为await是从右向左的执行顺序
    // 先执行fn(),打印1,然后遇到await,阻塞后面的console.log(2),先退出fn执行同步代码console.log(3),然后发现没有同步代码了,返回await,执行后续的console.log(2),所以结果为1 3 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
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值