温馨提示×

Promise

在TypeScript中,Promise是一种用于处理异步操作的对象。它代表了一个异步操作的最终结果。

创建Promise

要创建一个Promise,可以使用Promise构造函数,并传入一个执行器函数作为参数。执行器函数接收两个参数:resolve和reject,分别表示成功和失败的回调函数。当异步操作成功时,调用resolve并传入结果数据;当异步操作失败时,调用reject并传入错误信息。

const myPromise = new Promise((resolve, reject) => {
  // 异步操作
  if (/* 操作成功 */) {
    resolve('Success');
  } else {
    reject('Error');
  }
});

处理Promise

使用then方法来处理Promise的成功和失败回调。then方法接收两个参数:一个成功的回调函数和一个失败的回调函数。这两个回调函数分别在Promise状态变为resolved和rejected时被调用。

myPromise.then((result) => {
  console.log('Promise resolved: ' + result);
}, (error) => {
  console.error('Promise rejected: ' + error);
});

Promise链

可以通过返回一个新的Promise对象来实现Promise链式调用。在then方法中返回一个新的Promise对象,可以将前一个Promise的结果传递给后一个Promise。

const firstPromise = new Promise((resolve, reject) => {
  resolve('First promise');
});

firstPromise.then((result) => {
  console.log(result);
  return 'Second promise';
}).then((result) => {
  console.log(result);
});

Promise.all

Promise.all方法接收一个Promise数组作为参数,并在所有Promise都成功时返回一个新的Promise对象,其结果是一个包含所有Promise结果的数组。

const promise1 = Promise.resolve('Promise 1');
const promise2 = Promise.resolve('Promise 2');

Promise.all([promise1, promise2]).then((results) => {
  console.log(results);
});

Promise.race

Promise.race方法接收一个Promise数组作为参数,并在其中任意一个Promise成功或失败时返回一个新的Promise对象,其结果与第一个完成的Promise相同。

const promise1 = new Promise((resolve) => {
  setTimeout(() => {
    resolve('Promise 1');
  }, 2000);
});

const promise2 = new Promise((resolve, reject) => {
  setTimeout(() => {
    reject('Promise 2');
  }, 1000);
});

Promise.race([promise1, promise2]).then((result) => {
  console.log('First promise resolved: ' + result);
}).catch((error) => {
  console.error('First promise rejected: ' + error);
});

通过理解Promise的基本用法和常用方法,可以更好地处理异步操作,提高代码的可读性和维护性。希望这个简单的教程能帮助你更好地理解Promise在TypeScript中的应用。