c语言编程笔录

首页 >   > 笔记大全

笔记大全

带你轻松掌握Promise

更新时间:2023-09-16

什么是Promise?

Promise是JavaScript中一种异步编程的解决方案,它提供了一种处理异步操作的方式,比传统的回调函数更加优雅。在JavaScript中,异步操作的结果常常是不可预测的,使用Promise可以使得异步操作变得可控和可预测。

如何创建一个Promise对象?

Promise是一个类,使用new关键字创建对象。一个Promise对象有三种状态:进行中(pending)、已完成(fulfilled)、已拒绝(rejected)。当一个Promise对象被创建时,它处于pending状态,当异步操作执行成功时,Promise的状态会变成fulfilled,当异步操作执行失败时,Promise的状态会变成rejected。

let promise = new Promise(function(resolve, reject) {
  // 异步操作
});

如何处理Promise的状态变化?

一旦Promise对象的状态发生改变,它的状态就不会再发生变化,这意味着Promise可以帮助代码更好地处理异步操作返回的结果。要对Promise对象的状态进行处理,可以使用then()方法和catch()方法。

let promise = new Promise(function(resolve, reject) {
  setTimeout(() => {
    resolve("成功执行");
  }, 1000);
});

promise.then(function(value) {
  console.log(value);
})
.catch(function(error) {
  console.log(error);
});

上述代码中,使用then()方法可以处理异步操作的成功结果,catch()方法可以处理异步操作的失败结果。

如何使用Promise.all()和Promise.race()?

Promise.all()方法可以同时处理多个Promise对象,当所有Promise对象的状态变为fulfilled时,Promise.all()方法会返回一个包含所有Promise对象结果的数组;当任意一个Promise对象的状态变为rejected时,Promise.all()方法会返回rejected状态。

Promise.race()方法也可以处理多个Promise对象,但它只会返回第一个状态变化的Promise对象的结果。如果第一个状态变化的Promise对象的状态是fulfilled,Promise.race()方法返回fulfilled状态;如果第一个状态变化的Promise对象的状态是rejected,Promise.race()方法返回rejected状态。

let promise1 = new Promise(function(resolve, reject) {
  setTimeout(() => {
    resolve('成功执行1');
  }, 1000);
});

let promise2 = new Promise(function(resolve, reject) {
  setTimeout(() => {
    resolve('成功执行2');
  }, 2000);
});

Promise.all([promise1, promise2])
.then(function(values) {
  console.log(values);
});

Promise.race([promise1, promise2])
.then(function(value) {
  console.log(value);
});

总结:

Promise是一种处理异步操作的解决方案,它提供了一种优雅的方式来管理异步操作的结果。我们可以使用new关键字创建一个Promise对象,在Promise对象的异步操作执行成功时,可以使用resolve()方法将Promise对象的状态变为fulfilled,异步操作执行失败时,可以使用reject()方法将Promise对象的状态变为rejected。使用then()方法和catch()方法来分别处理异步操作的成功和失败结果。如果需要同时处理多个Promise对象,可以使用Promise.all()和Promise.race()方法。