ES9 中的标准对象:Promise

Promise(承诺)是 JavaScript 中处理异步操作的一种方式,它是一种封装异步操作并返回结果的对象。ES9 中的 Promise 标准对象进行了一些改进和扩展,使其更加灵活和便利,本文将对其进行详细介绍。

Promise 基本原理

Promise 对象有三种状态:pending、fulfilled 和 rejected,分别表示等待中、已完成和已拒绝。在创建 Promise 对象时,传入的函数(称为执行器)会被立即执行,并将重要函数 resolve 和 reject 传递给执行器。在适当的时候,执行器应该调用其中一个函数以将 Promise 对象从待处理状态转换为已处理状态。resolve 函数会将 Promise 标记为已完成,并返回结果;reject 函数会将 Promise 标记为已拒绝,并返回错误信息。

ES9 中的 Promise 扩展

Promise.finally

Promise.finally 方法在执行 Promise 最终状态前执行,无论 Promise 对象的状态是 fulfilled 还是 rejected,该方法总是会被执行。Promise.finally 方法接受一个回调函数作为参数,并返回一个新的 Promise 对象,该新 Promise 对象的状态和值与原始 Promise 对象一致。

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

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

Promise.allSettled

Promise.allSettled 方法接受一个 Promise 对象数组,返回一个 Promise 对象,该 Promise 对象的处理结果将遵循以下规则:

  • 所有 Promise 对象都被处理(即变为 fulfilled 或 rejected 状态)后,返回的 Promise 对象才会被处理
  • 如果所有 Promise 对象都已经变为 fulfilled 状态,则返回的 Promise 对象的状态变为 fulfilled,并且它的值是一个包含所有处理结果对象的数组
  • 如果任何 Promise 对象都变为 rejected 状态,则返回的 Promise 对象的状态变为 fulfilled,它的值是一个包含所有处理结果对象的数组
----- -------- - -
  -------------------------- ----------
  ------------------ --------------- -----------
  ------------------------ --------- ---------
--

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

Promise.any

Promise.any 方法接受一个 Promise 对象数组,只要有一个 Promise 对象变为 fulfilled 状态,返回的 Promise 对象就将立即处理并将其标记为已完成状态,它的值为第一个变为 fulfilled 状态的 Promise 对象的值。如果所有 Promise 对象都变为 rejected 状态,则 asny 将返回一个错误,它的值是由所有错误组成的数组。

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

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

Promise 与 async/await

Promise 和 async/await 是 JavaScript 处理异步操作的两种常见方式。使用 async/await 可以让异步代码更具可读性和可维护性,它使得代码看起来更像同步代码。

async 函数返回一个 Promise 对象,其中包含由函数解析的值,函数中可以使用 await 关键字来等待 Promise 对象的完成。

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

结论

Promise 是一种非常强大的异步处理方式,使用它可以更加高效的处理异步操作并返回结果。ES9 中的 Promise 扩展使其更加灵活和易于处理更多的异步场景。初学者应该掌握 Promise 基本原理以及 ES9 中的 Promise 扩展,熟悉 Promise 与 async/await 的使用方式,以便更好地利用异步机制处理程序的复杂性。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/672c7747ddd3a70eb6d845d5