Promise:进阶

问题导向

async await是什么? 如何使用?promise如何处理错误?宏任务和微任务?

如果你都有了答案,可以忽略本文章,或去JS学习地图寻找更多答案


async await

是什么?

generator和promise的语法糖
async = new Promise
await = then函数的语法糖
try-catch = catch

注意:
1.await必须写在aysnc函数中,但async函数中可以没有await
2.必须使用try catch 才能捕获失败的结果

async函数

async函数的返回值是一个promise对象,结果的状态根据函数返回的状态决定

async函数中:
1,返回的普通值/对象会封装成promise对象
2,await后可追加普通值,函数,async函数
3,await后如果是值,会封装成promise对象
4,await后如果是rejected态,会报错
5,await的下面,才是回调的异步代码,await和之前不是

//await 后是 promise对象
!(async () => {
   
   const p = Promise.resolve(300)  //返回promise对象
   const data = await p  //await 相当于then
   console.log(data)  //300
})()
​
​
//await 后是 普通值
!(async () => {
   
   const p = Promise.resolve(300)
   const data = await 400  //await Promise.resolve(400),相当于封装了
   console.log(data)  //400
})()
​
​
​
//await 后是 async函数
async function fn(){
   
   retrun Promise.resolve(200)
}
!(async () => {
   
   const p = Promise.resolve(300)
   const data = await fn()  //await Promise.resolve(200),相当于封装了
   console.log(data)  //200
})()


//try.catch
async function fn() {
   
   return Promise.reject('error')
}
!(async () => {
   
   try {
   
       const p = Promise.resolve(300)
       const data = await fn() //返回rejected态
       console.log(data)
  } catch (e) {
   
       console.log(e)  //error
  }
})()


//async 的回调
async function foo(){
   
   consolo.log(2)
   await bar()  
   console.log(5)  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值