现在和后端交互的,就是用promise封装的

产生原因

Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强
大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对
象。

状态

  1. Pending(进行中)
    2. Fulfilled(已成功)
    3. Rejected(已失败)

    流程图

    image.png

    常用方法

    Promise.prototype.then()

    Promise 实例具有then方法,也就是说,then方法是定义在原型对象Promise.prototype上的。它的作
    用是为 Promise 实例添加状态改变时的回调函数。前面说过,then方法的第一个参数是resolved状态的
    回调函数,第二个参数(可选)是rejected状态的回调函数。

    Promise.prototype.catch()

    Promise.prototype.catch方法是.then(null, rejection)或.then(undefined, rejection)的别名,用于指定发
    生错误时的回调函数。

    Promise.prototype.finally()

    finally方法用于指定不管 Promise 对象最后状态如何,都会执行的操作。该方法是 ES2018 引
    入标准的。

    Promise.all()

    Promise.all可以将多个Promise实例包装成一个新的Promise实例。同时,成功和失败的返回
    值是不同的,成功的时候返回的是一个结果数组,而失败的时候则返回最先被reject失败状态的
    值。
  1. const p = Promise.1 all([p1, p2, p3]);
  • 只有p1、p2、p3的状态都变成fulfilled,p的状态才会变成fulfilled,此时p1、p2、p3的返回值

    组成一个数组,传递给p的回调函数。

  • 只要p1、p2、p3之中有一个被rejected,p的状态就变成rejected,此时第一个被reject的实例

    的返回值,会传递给p的回调函数。

    Promise.race()

    Promse.race就是赛跑的意思,意思就是说,Promise.race([p1, p2, p3])里面哪个结果获得的
    快,就返回那个结果,不管结果本身是成功状态还是失败状态。

    Promise.resolve()

    Promise.reject()

    image.png