如何使用 async await 构建 Promise

阅读时长 4 分钟读完

前言

在 JavaScript 中,Promise 是用来处理异步操作的一种技术,可以让我们更好地处理异步操作,避免回调地狱。而 async/await 是一种基于 Promise 的语法糖,可以使代码更加的简洁明了,同时也更容易理解和维护。

在本篇文章中,我们将学习如何使用 async/await 来构建 Promise,希望能对你有所帮助。

Promise

在学习 async/await 之前,我们先来了解一下 Promise。

Promise 可以将异步操作封装成一个对象,可以处理异步操作的成功、失败和状态等信息。它有三种状态:pending(等待)、fulfilled(成功)、rejected(失败)。

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

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

async/await

async/await 是 ECMAScript 2017 的一种新语法,用于简化 Promise 的编写方式,并使代码更加易读易维护。

async 函数是 Promise 的语法糖,可以使用 await 来等待一个 Promise 的完成,同时也可以使用 try/catch 来捕获 Promise 的 reject。

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

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

------

在上面的例子中,我们使用 async 函数和 await 关键字来等待 delay 函数的返回结果,并输出 start 和 finish。当我们执行上面代码时,会先输出 start,等待 1 秒后再输出 finish。

async/await 和 Promise

async/await 其实就是 Promise 的语法糖,async 函数返回值是一个 Promise 对象,而 await 就是等待 Promise 对象的状态改变。

下面是一个使用 async/await 和 Promise 的例子:

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

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

------

在上面的例子中,我们通过 delay 函数模拟了一次异步操作,并使用 async/await 来构建 Promise 对象,等待其中一个 Promise 对象的状态改变,并依次输出其返回的结果。

总结

Promise 是一种处理异步操作的技术,async/await 是 Promise 的语法糖,可以使代码更加简洁明了,从而更容易理解和维护。我们可以使用 async/await 来等待一个 Promise 的完成,并通过 try/catch 来捕获 Promise 的 reject。

在实际开发中,我们可以使用 async/await 来处理异步操作,使代码更加的简洁优雅。希望这篇文章对你有所帮助!

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

纠错
反馈