• 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就是把异步操作封装起来,然后按照同步队列方式来执行

  • 相关阅读:
    openstack controller ha测试环境搭建记录(七)——配置glance
    openstack controller ha测试环境搭建记录(六)——配置keystone
    openstack controller ha测试环境搭建记录(五)——配置rabbitmq集群
    spring classpath & classpath*
    SVN相关
    eclipse安装springboot插件
    Hbase Shell常用命令
    CentOS下安装Hbase
    CentOS安装JDK-tar.gz文件
    Linux常用命令
  • 原文地址:https://www.cnblogs.com/mandymm/p/14087507.html
Copyright © 2020-2023  润新知