两个函数弄懂 async await 执行顺序

本文通过示例解释了async函数的工作原理,演示了如何使用await关键字等待Promise完成,并指出async函数的返回值是await表达式的返回值。在测试中,尽管有嵌套的Promise,但最终res的值始终是speak函数return的返回值。这展示了如何在异步操作中正确管理和传递结果。
摘要由CSDN通过智能技术生成

测试

定义这两个函数

main()

async function main() {
  const res = await speak()
  console.log(res);
}

async function speak() {
  const res = await new Promise(resolve => {
    setTimeout(() => {
      resolve('11')
    }, 1000)
  })
  return '返回值'
}

经过测试会发现,过了 1s 后,打印的 res 值始终是 speak 函数 return 的返回值。
在这里插入图片描述
其实 async 函数本身会返回一个 Promise。上面的 speak 函数使用 Promise + then 函数的写法可以是:

function speak() {
  return new Promise(o_resolve => {
    new Promise(i_resolve => {
      setTimeout(() => {
        i_resolve('11')
      }, 1000)
    }).then(value => {
      // const res = xxxx
      // 获取 return 的返回值 returnValue
      o_resolve(returnValue)
    })
  })
}

结论

async 函数的返回值应该是 await 函数的返回值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值