Promise 函数

106 阅读2分钟

Promise 函数

Promise 是 JavaScript 中用于处理异步操作的对象,它代表了一个尚未完成但最终会被解决的任务。主要用于解决回调地狱、处理异步任务的结果和错误。

  • Promise 对象具有以下三个状态:

    • pending:初始状态,表示任务尚未完成或被拒绝。

    • fulfilled:代表任务成功完成,并传递一个结果值。

    • rejected:代表任务失败或被拒绝,并传递一个错误值。

创建 Promise

可以使用 new Promise() 构造函数来创建一个 Promise 对象。构造函数接受一个执行器函数作为参数,该函数有两个参数:resolve 和 reject。通过调用这两个参数,可以将 Promise 设置为 fulfilled 状态或 rejected 状态。

示例:

const promise = new Promise((resolve, reject) => {
  // 模拟异步操作
  setTimeout(() => {
    const data = 'Hello, World!';
    if (data) {
      resolve(data); // 将 Promise 设置为 fulfilled 状态
    } else {
      reject('Error'); // 将 Promise 设置为 rejected 状态
    }
  }, 1000);
});

使用 Promise

.then() 方法可以在 Promise 对象状态为 fulfilled 时执行回调函数。回调函数的参数是上一个 Promise 对象传递的结果值。
示例:
promise.then((data) => {
  console.log(data); // 在状态为 fulfilled 时输出结果值
});

.catch() 方法可以在 Promise 对象状态为 rejected 时执行回调函数。回调函数的参数是上一个 Promise 对象传递的错误值。

示例:
promise.catch((error) => {
  console.error(error); // 在状态为 rejected 时输出错误值
});
.finally()方法可以在 Promise 对象无论状态是 fulfilled 还是 rejected 时都执行回调函数。
示例:
promise.finally(() => {
  console.log('Promise completed'); // 无论状态如何,都会输出该信息
});

Promise 链式调用

Promise 还支持链式调用,可以根据一个 Promise 对象的结果返回另一个 Promise 对象。
示例:
const fetchData = () => {
  return new Promise((resolve, reject) => {
    // 模拟异步操作
    setTimeout(() => {
      const data = 'Hello, World!';
      if (data) {
        resolve(data);
      } else {
        reject('Error');
      }
    }, 1000);
  });
};

fetchData()
  .then((data) => {
    console.log(data);
    return data.toUpperCase(); // 返回一个 Promise 对象
  })
  .then((uppercasedData) => {
    console.log(uppercasedData);
  })
  .catch((error) => {
    console.error(error);
  });

以上是 Promise 的基本概念和用法。使用 Promise,可以处理异步任务的结果和错误,并避免回调地狱的问题。

注:以上示例仅用于演示 Promise 的概念和用法,实际使用时请根据具体需求调整