TypeScript 中,Promise

在 TypeScript 中,Promise 是用于处理异步操作的对象。它表示一个可能在未来某个时间点完成或失败的操作,并返回操作结果或错误。

Promise 可以有三种状态:

  1. pending(进行中):Promise 的初始状态,表示操作正在进行中。
  2. fulfilled(已完成):表示操作成功完成。
  3. rejected(已拒绝):表示操作失败。

创建 Promise 对象时,需要传递一个执行器函数(executor function),它接受两个参数:resolve 和 reject。通过调用 resolve 函数,可以将 Promise 状态从 pending 变为 fulfilled,并传递操作结果。通过调用 reject 函数,可以将 Promise 状态从 pending 变为 rejected,并传递操作失败的原因。

Promise 提供了链式调用的机制,可以通过 then 方法注册成功状态的处理函数,通过 catch 方法注册失败状态的处理函数。这样可以对异步操作进行更加清晰和结构化的处理。

下面是一个使用 Promise 的示例:

function fetchData(): Promise<string> {
  return new Promise<string>((resolve, reject) => {
    setTimeout(() => {
      const data = 'Data fetched successfully';
      if (data) {
        resolve(data); // 模拟操作成功
      } else {
        reject(new Error('Failed to fetch data')); // 模拟操作失败
      }
    }, 2000);
  });
}
 
fetchData()
  .then((data) => {
    console.log(data); // 在操作成功时打印结果
  })
  .catch((error) => {
    console.error(error); // 在操作失败时打印错误信息
  });

  

 

在上述示例中,fetchData 函数返回一个 Promise 对象,用于模拟异步获取数据的操作。通过调用 then 方法注册成功状态的处理函数,该函数会在操作成功时被调用,并接收操作结果作为参数。通过调用 catch 方法注册失败状态的处理函数,该函数会在操作失败时被调用,并接收错误信息作为参数。

Promise 还提供了其他方法,如 finally 方法用于注册无论操作成功还是失败都要执行的处理函数,以及静态方法如 all、race、resolve 和 reject 等,用于处理多个 Promise 对象的组合和创建。

使用 Promise 可以更好地处理异步操作的结果和错误,避免回调地狱,使代码更加可读和可维护。

posted @ 2024-03-27 09:21  txwtech  阅读(1068)  评论(0编辑  收藏  举报