ES12 之 ES6 Promise 必知必会

阅读时长 5 分钟读完

前言

在 Web 前端开发中,异步编程是非常常见的。ES6 Promise 是一种可靠地解决 JavaScript 异步编程的方法,并经过了标准化的 Promise A+ 规范。这篇文章将会详细介绍 ES6 Promise,并为大家提供足够的样例代码来帮助大家更好地理解。

Promise 的基本概念

Promise 是一种代表异步操作最终完成或失败的对象。通俗地说,Promise 对象表示一个异步操作的最终完成,或者最终失败。可以使用 Promise.resolve(value) 或者 Promise.reject(reason) 来得到一个完成或失败的 Promise 对象。

Promise 有 3 个状态:

  • Pending(进行中)
  • Fulfilled(已成功)
  • Rejected(已失败)

当一个 Promise 从 Pending 状态转变成 FulfilledRejected 时,就称为 Promise 被 settled

Promise 的基本用法

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

-------------
  ------- -- -
    -- ----
    -------------------
  --
  -------- -- -
    -- ----
    --------------------
  -
--
展开代码

Promise 链式调用

Promise 链式调用可以让异步操作按顺序依次执行。

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

-------
  ------------- -- -
    -------------------
    ------ ----- - ------
  --
  ------------- -- -
    -------------------
    ------ ----- - ------
  --
  ------------- -- -
    -------------------
  ---
展开代码

在 Promise 链式调用中,每个 .then() 方法返回的都是 Promise 对象,所以可以使用 .then() 方法实现异步操作的串联或并联。

Promise 的常见操作

Promise.all()

Promise.all() 可以将多个 Promise 对象组合成一个新的 Promise 对象,这个新的 Promise 对象将在所有的 Promise 对象都已经成功被 settled 时,自动转化为 Fulfilled 状态。

如果其中有任何一个 Promise 被 Reject,则整个 Promise.all() 被 Reject。

Promise.race()

Promise.race() 可以将多个 Promise 对象组合成一个新的 Promise 对象,这个新的 Promise 对象将在其中任意一个 Promise 对象被 settled 时,自动转化为 Fulfilled 或 Rejected 状态。

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

----------------------- ----------------------- -- -
  ------------------- -- -----
---
展开代码

Promise.finally()

Promise.finally() 方法可以在 Promise 对象被 resolvedrejected 后,执行指定的回调函数。与 .then().catch() 不同,finally() 没有参数,只是在 Promise 对象对象完成后,执行回调函数。

-- -------------------- ---- -------
-------
  -------------- -- -
    ------ -------
  --
  -------------- -- -
    ------ ------
  --
  ----------- -- -
    -------------------- -------------
  ---
展开代码

总结

通过本文对 ES6 Promise 的详细介绍,我们学习到了 Promise 的基本概念、基本用法以及常见操作。掌握 Promise 非常重要,它可以使得异步编程更为流畅美妙。希望本文可以为大家学习 ES6 Promise 提供帮助并带来指导意义。

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

纠错
反馈

纠错反馈

程序员教程

精选优质教程,助你快速提升技术实力

程序员面试题库

海量优质面试题,助你轻松应对技术面试