对 async和await的理解

1. async await定义:

  • asyne表示异步函数,await表示等待可以理解为 async wait。async 可以用来声明异步方法,await 是用来等待异步方法的执行。
  • async作为关键字放在函数的前面,表示这个函数是异步函数,而且异步函数不会阻塞后面的代码,await是等待异步方法执行完成。
  • async 等待一个 Promise 对象,这个Promise对象可能是resolve也可能是reject,那么此时就会恢复执行,并且阻塞后面的代码执行。

 2. async/await用法:

async的用法很简单,在函数的前面加上async将该函数转换为异步函数            

             

那我们在换一种方法,在 async 的后面添加一行打印

        

这里我们发现 getNum 威慑么没有返回呢?带着这个问题我们打印看一下

        

打印后我们看到他其实是返回了一个 Promise 对象,包含 State 和 Result,State表示的是Promise返回的状态,fulfilled表示成功的状态,而Result表示返回的内容。如果有返回值就调用该函数内部用 resole() 将它转换为 Promise 对象并返回。那我们怎么让他抛出一个错误呢?

        

通过创建新的错误,我们发现State的状态变为了 rejected,rejected表示失败的状态

        

        

3. 异常捕获

如果Promise对象抛出 rejected 错误我们可以将 await放在 try...catch...里面进行捕获

4.多发请求合并

在我们初始化时需要获取多个接口页面数据时,请求并不会一起请求,而是等到第一个请求返回后,才会请求第二个请求,这样我们的页面加载时间过长,容易产生回调地狱的问题。

解决这个问题我们可以将多个请求可以使用 await Promise.all( promises ) 这个方法里面,此时我们在刷新页面,从控制台网络时间线发现多个请求一起请求,从而解决了回调地狱的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值