# 创建 Promise 对象

// 初始化状态
let promise = new Promise(function (resolve, reject) {
  /**
   * resolve - 是一个函数,将 Promise 对象的状态改为成功
   * rejecte - 是一个函数,将 Promise 对象的状态改为失败
   */
  setTimeout(() => {
    resolve("测试成功了!");
  }, 200);
});
//then 将 promise 的状态改变
promise.then(function (value) {
  console.log(value); // 测试成功了!
});

# Promise 对象原型的方法

  1. then() 方法

    主要作用是为 Promise 对象添加状态改变时回调函数。其第一个参数 resolved 状态的回调函数。第二个参数是 rejected 状态时的回调函数。

  2. catch() 方法

    此方法返回一个 Promise 对象,并且处理拒绝的情况。

    let promise = new Promise(function (resolve, reject) {
      setTimeout(() => {
        reject("测试成功了!");
      }, 200);
    });
    //then 将 promise 的状态改变
    promise
      .then((value) => {
        console.log("then() :", value);
      })
      .catch((value) => {
        console.log("catch() :", value); //catch () : 测试成功了!
      });
  3. finally() 方法

    返回一个 Promise 对象,在执行 then()catch() 后,都会执行 finally() 方法。

    let promise = new Promise(function (resolve, reject) {
      setTimeout(() => {
        reject("测试成功了!");
      }, 200);
    });
    //then 将 promise 的状态改变
    promise
      .then((value) => {
        console.log("then() :", value);
      })
      .catch((value) => {
        console.log("catch() :", value); //catch () : 测试成功了!
      })
      .finally(() => {
        console.log("finally"); // finally
      });

# 对象方法

  1. Promise.resolve(value)

    返回一个成功的对象

  2. Promise.reject(reject)

    返回一个失败的对象

  3. Promise.all()

    将对各 Promise 对象整合成一个。

    let promise1 = new Promise((resolve, reject) => {
      resolve("promise1");
    });
    let promise2 = new Promise((resolve, reject) => {
      resolve("promise2");
    });
    let promise3 = new Promise((resolve, reject) => {
      resolve("promise3");
    });
    let promise = Promise.all([promise1, promise2, promise3]);
    promise.then((value) => {
      console.log(value); // [ 'promise1', 'promise2', 'promise3' ]
    });
  4. Promise.race()

    在整合中的 Promise 对象中,哪个 Promise 对象先执行完,函数就返回什么。

    let promise1 = new Promise((resolve, reject) => {
      setTimeout(() => {
        resolve("one");
      }, 100);
    });
    let promise2 = new Promise((resolve, reject) => {
      setTimeout(() => {
        resolve("two");
      }, 300);
    });
    let promise = Promise.race([promise1, promise2]);
    promise.then((value) => {
      console.log(value); //one 因为第一个先执行完
    });

# Promise 执行的流程

image-20201027091956032

更新于

请我喝[茶]~( ̄▽ ̄)~*

Dreamy.TZK 微信支付

微信支付

Dreamy.TZK 支付宝

支付宝