返回

为所有开发者奉上:Promise秘密初探之小试牛刀

前端

名如其实,Promise本意是承诺,在程序中的意思就是承诺我过一段时间后会给你一个结果。什么时候会用到过一段时间?答案是异步操作,异步是指可能比较长时间才有结果的才做,例如网络请求、读取本地文件等。

Promise是什么?

Promise是一个对象,它代表一个即将完成或已经完成的异步操作。Promise有三种状态:等待、完成和失败。

  • 等待 :Promise最初处于等待状态,表示异步操作尚未完成。
  • 完成 :当异步操作成功完成时,Promise会进入完成状态,并通过then方法提供结果。
  • 失败 :当异步操作失败时,Promise会进入失败状态,并通过catch方法提供错误信息。

Promise的用法

要使用Promise,需要创建一个Promise实例,并给Promise构造函数传入一个函数。传入的函数有两个参数:

  • resolve :当异步操作成功完成时,调用此函数将Promise的状态从等待变为完成。
  • reject :当异步操作失败时,调用此函数将Promise的状态从等待变为失败。
const promise = new Promise((resolve, reject) => {
  // 异步操作
  setTimeout(() => {
    resolve("异步操作成功完成");
  }, 2000);
});

then方法

then方法用于处理Promise的结果。then方法接收两个参数:

  • onFulfilled :当Promise的状态为完成时,调用此函数处理结果。
  • onRejected :当Promise的状态为失败时,调用此函数处理错误信息。
promise.then(
  (result) => {
    // 处理成功的结果
    console.log(result);
  },
  (error) => {
    // 处理错误信息
    console.error(error);
  }
);

catch方法

catch方法用于处理Promise的错误信息。catch方法接收一个参数:

  • onRejected :当Promise的状态为失败时,调用此函数处理错误信息。
promise.catch((error) => {
  // 处理错误信息
  console.error(error);
});

finally方法

finally方法无论Promise的状态是完成还是失败,都会执行。finally方法接收一个参数:

  • onFinally :无论Promise的状态是完成还是失败,都会调用此函数。
promise.finally(() => {
  // 无论Promise的状态是完成还是失败,都会执行此函数
  console.log("无论Promise的状态是完成还是失败,都会执行此函数");
});

总结

Promise是JavaScript中异步编程的利器,它使我们能够轻松处理异步操作,并避免回调地狱。掌握Promise的使用方法,可以极大地提升我们的编码效率和代码可读性。