# 2.1promise是什么

# 2.1.1理解

  1. 抽象表达:

    1. promise是一门新的技术(ES6规范)

    2. promise是js中进行异步编程的新解决方案

      备注:旧方案是单纯使用回调函数

  2. 具体表达:

    1. 从语法上来说:promise是一个构造函数
    2. 从功能上来说:promise对象用来封装一个异步操作并可以获取其成功/失败的结果值

# 2.1.2 Promise 的状态

  1. pemding 变为resolved
  2. pending变为rejected

说明只有这2种,且一个promise对象只能改变一次 无论变为成功还是失败,都会有一个结果数据 成功的结果数据一般称为value 失败的结果一般称为reason

实例对象种的一个属性[PromoseState]

  • pending 未决定的

  • resolved/fullfilled 成功

  • rejected 失败

# 2.1.3Promise对象的值

实例对象中的另一个属性[PromiseResult]

保存着异步任务 [成功/失败]的结果

  • resolve
  • reject

# 2.1.4Promise基本流程

Alt text

# 2.2为什么要用Promise

# 2.2.1指定回调函数的方式更加灵活

  1. 旧的:必须在启动异步任务前指定
  2. promise:启动异步任务 =>返回promise对象 =>给promise对象绑定回调函数(甚至可以在异步任务结束后指定/多个)

# 2.2.2支持链式调用,可以解决回调地狱问题

  1. 什么是回调地狱?

    回调函数嵌套使用,外部回调函数异步执行的结果是嵌套的回调执行的条件

  2. 回调地狱的缺点?

    不便于阅读

    不便于异常处理

  3. 解决方案?

​ promise链式调用

更新时间: 31 分钟