async与普通函数区别,以及搭配await使用

async函数 与 普通函数的区别

async 函数 可以使用then catch 方法,普通函数不行

  • 使用then 方式
async function foo(){
  console.log('函数中执行的代码')

  return '888'
}

console.log('函数外执行的代码--start')

// res 为函数return 出来的返回值,若是没有return 则 res为undefined
foo().then(res=>{
  console.log('res:',res)
})

console.log('函数外执行的代码--end')

// 也可以在函数中写then 方法
async function foo(){
  console.log('函数中执行的代码')

  return {
    then:(resovlve,reject)=>{
      resovlve(123456)
    }
  }
}

console.log('函数外执行的代码--start')

foo().then(res=>{
  console.log('res:',res)
})

console.log('函数外执行的代码--end')
  • 使用catch方法
async function foo(){
  console.log('函数中执行的代码')

  throw Error('error message')
}

console.log('函数外执行的代码--start')

foo().catch(err=>{
  console.log('err:',err)
})

console.log('函数外执行的代码--end')
  • async 函数中也可以只用promise
async function foo(){
  console.log('函数中执行的代码')

  return new Promise((resolve,reject)=>{
    // resolve('resolve 返回的值')
    reject('reject 返回的值')
  })
}

console.log('函数外执行的代码--start')

foo().catch(err=>{
  console.log('err:',err)
})

console.log('函数外执行的代码--end')

  • await 配合 async 使用
// 函数必须是promise 返回
function bar(){
  return new Promise((resolve,reject)=>{
    resolve({
      code:200,
      msg:'成功了'
    })
  })
}

async function foo(){
  const { code, msg } = await bar()

  console.log('code:',code,'-----msg:',msg)
}

foo()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值