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

  • 相关阅读:
    AB(ApacheBench)工具 -- 压力测试
    请求错误 --405
    第三方支付 -----支付宝支付流程
    前后端分离 ---购物车
    canvas实现碰壁反弹(单个小方块)
    h5 的canvas绘制基本图形
    for in 循环
    js创建对象的三种方式和js工厂模式创建对象
    类的继承
    jq操作class类
  • 原文地址:https://www.cnblogs.com/mandymm/p/14087507.html
Copyright © 2011-2022 走看看