promise对象的理解

1.promise是什么:

promise是一个对象,内部一般会封装一些异步操作,并且传递异步操作的结果。

2.promise有三种状态:

  • pending:等待中,promise对象已被创建出来,默认就是pending状态
  • resolved/fulfilled:意味着操作成功
  • rejected:意味着操作失败

3.promise内部做了什么:

promise对象内部会提供两个函数,resolve和reject

  • 当操作成功的时候调用resolve函数,将promise的pending状态修改为resolved状态,这样promise调用执行相关程序,就是.then方法中配置的成功的回调函数
  • 当操作失败的时候调用rejecte函数将promise的pending状态修改为rejected状态,这样当promise调用执行相关程序,就是.catch中配置的失败的回调函数

过程:

创建promise对象---->>进入pending状态----->>在promise内部封装异步操作

------>>异步操作成功----->>调用resolve函数------>>修改pending状态为resolved状态------>>可调用.then中成功的回调函数

------>>异步操作失败----->>调用reject函数------>>修改pending状态为rejected状态------>>可调用.catch中失败的回调函数

另:

如果promise的状态已经从pending进入resolved或者rejected状态,那么promise的状态不会再改变,此时promise的状态已经被锁定(settled)

 

4.aync和await关键词

1.async用于修饰一个函数,表示这个函数内部有异步操作

如果async函数中没有await关键词,那么async就没有什么意义,整个函数都是同步的内容

async函数的内容,直到遇到await关键词,await下面的代码,才是异步的开始,上面的还是同步的

2.await只能在async函数中使用,只有await会报错

3.await后面一般会跟一个promise对象,await会阻塞async函数的执行,直到等到这个promise的成功的结果

4.await只会等待成功的结果,如果返回错误的结果,需要用try catch来捕获错误

 

总结:

promise是一个对象,内部封装一些异步操作,它的出现是为了解决回调地狱的问题,但是由于.then的方法对于代码的书写并没有得到更好的解决,因此async和await关键词可以解决.then的回调问题。

async和await修饰的异步操作,从上往下依次执行,将异步操作按照同步操作的队列执行,从逻辑上更好的理解,对于代码的结构也更加清晰。

总的来说,promise+async+await就是把异步操作封装起来,然后按照同步队列方式来执行

posted @ 2020-12-04 19:53  Mandy么么  阅读(222)  评论(0编辑  收藏  举报