ES9 中对 Async Await 的改进和新特性

阅读时长 4 分钟读完

在 ES8 中,我们已经看到了 Async Await 的引入,这是 JavaScript 中处理异步代码的一种新方式,它可以让我们写出更加简洁、易读的异步代码。在 ES9 中,Async Await 得到了一些改进和新特性,这些改进和新特性可以让我们更加方便地处理异步代码。

Async Await 简介

在讲解 ES9 中对 Async Await 的改进和新特性之前,我们先来简单回顾一下 Async Await 的基本用法。

Async 函数是一个返回 Promise 对象的函数,可以通过在函数前面加上 async 关键字来定义。在 Async 函数内部,我们可以使用 Await 关键字来等待一个 Promise 对象的完成,当 Promise 对象完成后,Await 关键字会返回 Promise 对象的 resolve 值,如果 Promise 对象出现了错误,则会抛出错误。

下面是一个简单的例子,展示了如何使用 Async Await 来处理异步代码:

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

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

在上面的代码中,我们定义了一个 Async 函数 getData(),该函数会异步地获取数据并返回一个 Promise 对象。在函数内部,我们使用了 Await 关键字来等待 fetch()response.json() 方法的完成,当这两个方法完成后,我们可以得到我们需要的数据并返回它。在调用 getData() 函数时,我们使用了 Promise 的 then() 和 catch() 方法来处理异步操作的结果。

在 ES9 中,Async Await 得到了一些改进和新特性,这些改进和新特性可以让我们更加方便地处理异步代码。

Async 函数返回值

在 ES8 中,Async 函数的返回值总是一个 Promise 对象,这个 Promise 对象的 resolve 值就是 Async 函数的返回值。在 ES9 中,我们可以使用 return 语句来直接返回一个值,而不需要将其包装在 Promise 对象中。

下面是一个示例代码:

在上面的代码中,我们定义了一个 Async 函数 sum(),该函数会异步地计算两个数字的和并返回结果。在函数内部,我们使用了 return 语句来直接返回计算结果,而不需要将其包装在 Promise 对象中。在调用 sum() 函数时,我们使用了 Promise 的 then() 方法来处理异步操作的结果。

Try/Catch 块中的 Async 函数

在 ES8 中,如果我们想要在 Try/Catch 块中使用 Async 函数,我们需要在 Try 块中使用 Async 函数,并在 Catch 块中使用 Promise 的 catch() 方法来处理错误。

在 ES9 中,我们可以直接在 Try/Catch 块中使用 Async 函数,并使用 try/catch 语句来处理错误。这样可以让我们更加方便地处理异步代码中的错误。

下面是一个示例代码:

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

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

在上面的代码中,我们定义了一个 Async 函数 getData(),该函数会异步地获取数据并返回一个 Promise 对象。在 Try 块中,我们使用了 Async 函数 getData() 来获取数据,并使用 const 关键字来声明一个变量来存储数据。在 Catch 块中,我们使用了 try/catch 语句来处理错误,如果 Async 函数出现了错误,我们就可以在 Catch 块中处理它。

总结

在 ES9 中,Async Await 得到了一些改进和新特性,这些改进和新特性可以让我们更加方便地处理异步代码。我们可以直接返回一个值,而不需要将其包装在 Promise 对象中,我们也可以在 Try/Catch 块中使用 Async 函数,并使用 try/catch 语句来处理错误。这些改进和新特性可以让我们写出更加简洁、易读的异步代码。

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

纠错
反馈