创建Promise对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 初始化状态
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对象,并且处理拒绝的情况。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    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()方法。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    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对象整合成一个。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    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对象先执行完,函数就返回什么。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    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