async/await和Promise的关系

async/await和Promise的关系

  • async/await 是消灭异步回调的终极武器
  • 但是和Promise互不相斥
  • 两者相辅相成

相辅相成:

  • 执行async函数,返回的是Promise对象
  • await相当于Promise的then
  • try…catch 可捕获异常,代替了Promise的catch

执行async函数,返回的是Promise对象

async function fn1(){
     return 100 //相当于return Promise.resolve(100)
    // return Promise.resolve(200)
}
const res1=fn1()//执行async函数,返回的是一个Promise对象,比如上面的return 100封装成了一个Promise对象进行返回
console.log('res1',res1)//Promise对象
res1.then(data=>{
     console.log('data',data)//100
})
//可以用const data= await fn1()接收data值 使用await,要和async配套

await相当于Promise的then

!( async function(){
	const res2=Promise.resolve(100)//相当于上面例子的res1 也就是fn1()
	const data= await res2 //await相当于Promise的then  res1.then(data=>{})
	console.log('data',data)//100
})()

!( async function(){
	const res2=await 400 //await Promise.resolve(400) await后面不跟Promise,也会被封装成Promise
	console.log('res2',res2)//400
})()

try…catch 可捕获异常,代替了Promise的catch

!( async function(){
	const p4=Promise.reject('err')//rejected状态
	try{
	   const res=await p4 //await相当于then,但是reject不会触发then
	   console.log(res) //不会输出,因为const res=await p4被报错,被catch捕获
	} catch(ex){
	 console.error(ex)//try...catch 相当于Promise的catch
	}
	
})()

总结:async封装Promise,await相当then,try…catch相当于catch

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值