async里面的return的理解

结论:async函数return的是一个promise对象,也就是说,会将你想返回的数据,包裹在一个promise的resolve里面*

想在fun3里面取得fun1里面的resolve数据,下面的写法是错误

//原本这样写(这样写是错误的)
function fun1() {
  return new Promise((resolve,reject) => {
    resolve('fun1')
  })
}

async function fun2() {
  const fun1Data = fun1()
  return fun1Data
}

function fun3() {
  const fun2Data = fun2()
  console.log('fun2Data',fun2Data)
}

fun3()

原因就是:async函数return的是一个promise对象,也就是说,会将你想返回的数据,包裹在一个promise的resolve里面

例如:

async function fun2() {
  return 123
}

function fun3() {
  const fun2Data = fun2()
  console.log('fun2Data',fun2Data)
}

fun3()//打印输出=>fun2Data Promise { 123 }

所以最上面写法错误的原因就是:fun2()也是一个promise对象,fun3()执行时,遇见异步函数,放进执行队列,不等待它执行完成,而直接执行后面的console.log

正确写法:

function fun1() {
  return new Promise((resolve,reject) => {
    resolve('fun1')
  })
}

async function fun2() {
  const fun1Data = await fun1()
  return fun1Data
}

async function fun3() {
  const fun2Data = await fun2()
  console.log('fun2Data',fun2Data)
}

fun3()//打印输出=>fun2Data fun1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值