理解 ECMAScript 2019 中更好的使 await 命令更加简短

阅读时长 5 分钟读完

前言

在现代的 JavaScript 开发中,async/await 已经成为了异步编程的主流方式。在 ECMAScript 2019 中,await 命令也得到了一些改进,使得它更加简洁和易于使用。本文将介绍这些改进,以及如何在实际开发中使用它们。

理解 await 命令

在 JavaScript 中,异步编程是非常常见的。在某些情况下,我们需要等待异步操作完成后才能继续执行后续代码。这时,我们就需要使用 await 命令。

await 命令可以让 JavaScript 引擎等待一个异步操作完成,然后再继续执行后续代码。它通常与 async 函数一起使用,例如:

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

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

在上面的代码中,fetch 函数返回一个 Promise 对象,它表示异步操作的结果。我们使用 await 命令等待 fetch 函数返回的 Promise 对象,然后再使用 await 命令等待 result 对象的 json 方法返回的 Promise 对象。最后,我们返回获取到的数据。

ECMAScript 2019 中的改进

在 ECMAScript 2019 中,await 命令得到了一些改进,使得它更加简洁和易于使用。

异步迭代器

在以前的版本中,我们只能使用 for...of 循环来迭代同步可迭代对象。在 ECMAScript 2018 中,我们可以使用 for await...of 循环来迭代异步可迭代对象。在 ECMAScript 2019 中,我们可以直接使用 await 命令来获取异步可迭代对象的下一个值。例如:

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

在上面的代码中,我们使用 await 命令来获取 response.body.getReader() 返回的异步可迭代对象的下一个值。我们可以直接使用 value 属性来获取这个值。

Promise.allSettled

在以前的版本中,我们只能使用 Promise.all 方法来等待多个 Promise 对象全部完成。在 ECMAScript 2019 中,我们可以使用 Promise.allSettled 方法来等待多个 Promise 对象全部完成,并返回它们的结果。例如:

在上面的代码中,我们使用 Promise.allSettled 方法来等待三个 Promise 对象全部完成。即使其中一个 Promise 对象失败了,Promise.allSettled 方法仍然会等待所有的 Promise 对象全部完成,并返回它们的结果。

如何使用 await 的改进

在实际开发中,我们可以使用 await 命令的改进来使我们的代码更加简洁和易于理解。例如:

使用 for await...of 循环

在处理异步可迭代对象时,我们可以使用 for await...of 循环来替代 while 循环。例如:

在上面的代码中,我们使用 for await...of 循环来迭代 response.body.getReader() 返回的异步可迭代对象。我们可以直接使用 value 属性来获取这个值。

使用 Promise.allSettled 方法

在处理多个 Promise 对象时,我们可以使用 Promise.allSettled 方法来等待它们全部完成,并返回它们的结果。例如:

在上面的代码中,我们使用 Promise.allSettled 方法来等待三个 Promise 对象全部完成,并返回它们的结果。即使其中一个 Promise 对象失败了,Promise.allSettled 方法仍然会等待所有的 Promise 对象全部完成,并返回它们的结果。

结论

在 ECMAScript 2019 中,await 命令得到了一些改进,使得它更加简洁和易于使用。我们可以使用这些改进来使我们的代码更加简洁和易于理解。在实际开发中,我们应该充分利用这些改进,提高我们的开发效率。

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

纠错
反馈