返回

ES6 新特性:Promise

前端

什么是 Promise?

Promise 是一个对象,它表示一个异步操作的结果。Promise 可以处于三种状态:

  • pending:表示异步操作正在进行中。
  • resolved:表示异步操作已成功完成。
  • rejected:表示异步操作已失败。

Promise 的用法

要使用 Promise,您需要先创建一个 Promise 对象。您可以通过 new Promise() 来创建 Promise 对象。

const promise = new Promise((resolve, reject) => {
  // 异步操作
});

在 Promise 对象中,您需要提供一个执行器函数。执行器函数有两个参数:resolve 和 reject。

  • resolve:用于将 Promise 的状态设置为 resolved。
  • reject:用于将 Promise 的状态设置为 rejected。

当异步操作成功完成时,您应该调用 resolve() 方法来将 Promise 的状态设置为 resolved。当异步操作失败时,您应该调用 reject() 方法来将 Promise 的状态设置为 rejected。

Promise 的链式调用

Promise 支持链式调用。这意味着您可以将多个 Promise 对象连接起来,形成一个链式结构。当一个 Promise 对象的状态发生改变时,会自动触发下一个 Promise 对象的执行。

promise
  .then((result) => {
    // 处理成功结果
  })
  .catch((error) => {
    // 处理失败结果
  });

Promise.all 和 Promise.race

Promise.all() 和 Promise.race() 是两个非常有用的 Promise 方法。

Promise.all() 方法接受一个 Promise 对象数组作为参数。当所有 Promise 对象都成功完成时,Promise.all() 方法会返回一个包含所有 Promise 对象结果的数组。如果任何一个 Promise 对象失败,Promise.all() 方法会立即返回一个包含错误信息的 Promise 对象。

Promise.all([promise1, promise2, promise3])
  .then((results) => {
    // 处理成功结果
  })
  .catch((error) => {
    // 处理失败结果
  });

Promise.race() 方法接受一个 Promise 对象数组作为参数。当任何一个 Promise 对象完成时,Promise.race() 方法会立即返回该 Promise 对象的结果。

Promise.race([promise1, promise2, promise3])
  .then((result) => {
    // 处理成功结果
  })
  .catch((error) => {
    // 处理失败结果
  });

总结

Promise 是 ES6 中一个非常强大的工具,它可以帮助您更好地处理异步操作。如果您还没有使用过 Promise,我强烈建议您学习一下。