TS promise
在 TypeScript 中,Promise 是用于处理异步操作的对象。它表示一个可能在未来某个时间点完成或失败的操作,并返回操作结果或错误。
Promise 可以有三种状态:
- pending(进行中):Promise 的初始状态,表示操作正在进行中。
- fulfilled(已完成):表示操作成功完成。
- 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 可以更好地处理异步操作的结果和错误,避免回调地狱,使代码更加可读和可维护。