关于async函数中await的执行分析

本文探讨了async函数中await关键字的行为,特别是它如何等待Promise变为resolve状态才继续执行。当await后的Promise未处理resolve状态时,程序会等待。在错误处理方面,如果Promise有catch,不影响后续执行;若无错误处理,会抛出错误,并可能由上层catch捕获。根据jQuery的promise机制,await的错误处理遵循类似catch的规则,寻找合适的错误处理函数。
摘要由CSDN通过智能技术生成

关于async函数中await的执行分析

     async函数中await命令后面是一个 Promise 对象。如果不是,会被转成一个立即resolve的 Promise 对象。那么await是否等待这个Promise置为resolve状态才能进行下一步运行呢?我们通过下面代码分析下

async function test(){
        await new Promise(function(resolve,reject){
            setTimeout(x=>resolve('11111'),2000);
        }).then(x=>console.log(x));
        await new Promise(function(resolve,reject){
            setTimeout(x=>resolve('22222'),2000);
        }).then(x=>console.log(x));
    }
    test()
    //11111  2秒后打印
    //22222  4秒后打印

    分析得出await是在Promise的resolve状态下才进行下一步。
    如果没有处理resolve状态呢?

 async function test(){
        await new Promise(function(resolve,reject){
            //setTimeout(x=>resolve('11111'),2000);
        });
        await new Promise(function(resolve,reject){
            setTimeout(x=>resolve('22222'),2000);
       
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值