Promise 的各类原型方法详解

阅读时长 7 分钟读完

Promise 是一种处理异步操作的方式,它可以让我们更优雅地处理异步操作,并避免了回调地狱的问题。在前端开发中,Promise 已经成为了不可或缺的一部分。在本文中,我们将会详细介绍 Promise 的各类原型方法,包括其作用、使用方法以及示例代码。

Promise 的基本概念

在介绍 Promise 的原型方法之前,我们先来了解一下 Promise 的基本概念。Promise 是一个对象,它代表了一个异步操作的最终完成(或失败)及其结果值。Promise 有三种状态:pending(进行中)、fulfilled(已完成)和 rejected(已失败)。当 Promise 进行中时,我们可以使用 Promise 的原型方法来处理它的状态变化。

Promise 的原型方法

Promise.prototype.then()

Promise.prototype.then() 方法用来处理 Promise 的成功状态。它接收两个参数:onFulfilled 和 onRejected。当 Promise 进入成功状态时,onFulfilled 会被调用;当 Promise 进入失败状态时,onRejected 会被调用。

示例代码:

-- -------------------- ---- -------
----- ------- - --- ----------------- ------- -- -
  ------------- -- -
    -------------- --------
  -- ------
---

--------------------- -- -
  --------------------
---------------- -- -
  ---------------------
---

在上面的示例代码中,我们创建了一个 Promise,它会在 1 秒后返回一个字符串。然后我们使用 Promise.prototype.then() 方法来处理 Promise 的成功状态,并打印出结果。如果 Promise 进入失败状态,则会调用 Promise.prototype.catch() 方法。

Promise.prototype.catch()

Promise.prototype.catch() 方法用来处理 Promise 的失败状态。它接收一个参数:onRejected。当 Promise 进入失败状态时,onRejected 会被调用。

示例代码:

-- -------------------- ---- -------
----- ------- - --- ----------------- ------- -- -
  ------------- -- -
    ---------- ---------------- ---- ---------
  -- ------
---

--------------------- -- -
  --------------------
---------------- -- -
  ---------------------
---

在上面的示例代码中,我们创建了一个 Promise,它会在 1 秒后返回一个错误。然后我们使用 Promise.prototype.catch() 方法来处理 Promise 的失败状态,并打印出错误信息。

Promise.prototype.finally()

Promise.prototype.finally() 方法用来在 Promise 执行结束后,无论 Promise 的状态如何,都会执行一段代码。它接收一个参数:onFinally。

示例代码:

-- -------------------- ---- -------
----- ------- - --- ----------------- ------- -- -
  ------------- -- -
    -------------- --------
  -- ------
---

--------------------- -- -
  --------------------
---------------- -- -
  ---------------------
------------- -- -
  -------------------- -----------
---

在上面的示例代码中,我们创建了一个 Promise,它会在 1 秒后返回一个字符串。然后我们使用 Promise.prototype.finally() 方法来处理 Promise 的状态,并打印出最终结果。

Promise.prototype.all()

Promise.prototype.all() 方法用来处理一组 Promise,它接收一个数组作为参数。当所有的 Promise 都进入成功状态时,Promise.prototype.all() 方法会返回一个包含所有结果的数组;当任意一个 Promise 进入失败状态时,Promise.prototype.all() 方法会返回一个失败的 Promise。

示例代码:

-- -------------------- ---- -------
----- -------- - --- ----------------- ------- -- -
  ------------- -- -
    -----------------
  -- ------
---

----- -------- - --- ----------------- ------- -- -
  ------------- -- -
    -----------------
  -- ------
---

---------------------- ------------------------- -- -
  ---------------------
---------------- -- -
  ---------------------
---

在上面的示例代码中,我们创建了两个 Promise,它们会在不同的时间返回一个字符串。然后我们使用 Promise.prototype.all() 方法来处理这两个 Promise,并打印出最终结果。

Promise.prototype.race()

Promise.prototype.race() 方法用来处理一组 Promise,它接收一个数组作为参数。当任意一个 Promise 进入成功或失败状态时,Promise.prototype.race() 方法会返回一个 Promise,并将第一个进入成功或失败状态的 Promise 的结果作为其结果。

示例代码:

-- -------------------- ---- -------
----- -------- - --- ----------------- ------- -- -
  ------------- -- -
    -----------------
  -- ------
---

----- -------- - --- ----------------- ------- -- -
  ------------- -- -
    ---------- ---------------- ---- ---------
  -- ------
---

----------------------- ------------------------ -- -
  --------------------
---------------- -- -
  ---------------------
---

在上面的示例代码中,我们创建了两个 Promise,它们会在不同的时间返回一个字符串或一个错误。然后我们使用 Promise.prototype.race() 方法来处理这两个 Promise,并打印出最终结果。

结论

在本文中,我们详细介绍了 Promise 的各类原型方法,包括 Promise.prototype.then()、Promise.prototype.catch()、Promise.prototype.finally()、Promise.prototype.all() 和 Promise.prototype.race()。这些方法可以帮助我们更优雅地处理异步操作,并避免了回调地狱的问题。我们希望本文能够对你有所帮助,并帮助你更好地理解 Promise 的使用方法。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/673aa59739d6d08e88af23f5

纠错
反馈