随着 JavaScript 的发展,ECMAScript 也在不断地升级。ES9(又称 ECMAScript 2018)是 ECMAScript 的最新版本,于 2018 年 6 月正式发布。ES9 中有很多新增特性,本文将介绍其中的一些。
Asynchronous Iteration(异步迭代)
在 ES9 中,我们可以使用 for-await-of
来遍历异步可迭代对象。这个特性可以让我们更加方便地处理异步数据,例如异步读取文件或从数据库中获取数据。
下面是一个简单的示例,使用 for-await-of
来遍历一个异步生成器:
-- -------------------- ---- ------- ----- --------- ---------------- - ----- -- ----- -- ----- -- - ------ ---------- - --- ----- ---- --- -- ----------------- - ----------------- - -----
在这个示例中,我们定义了一个异步生成器 asyncGenerator
,它会依次生成数字 1、2、3。然后我们使用 for-await-of
来遍历这个异步生成器,并打印出每个数字。
Rest/Spread Properties(剩余/扩展属性)
在 ES9 中,我们可以使用剩余和扩展属性来更方便地处理对象和数组。剩余属性可以让我们从一个对象或数组中取出一部分属性,而扩展属性则可以让我们将一个对象或数组中的属性合并到另一个对象或数组中。
下面是一个简单的示例,使用剩余和扩展属性来处理对象:
-- -------------------- ---- ------- ----- ------ - - ----- -------- ---- --- ------- --------- -------- - ----- ----------- -------- ------- - -- ----- - ----- ---- ------- - - ------- ------------------ -- ----- ----------------- -- -- ------------------ -- - ------- --------- -------- - ----- ----------- -------- ------- - - ----- --------- - - ---------- ---- ----------- -- ----------------------- -- - ----- -------- ---- --- ------- --------- -------- - ----- ----------- -------- ------- -- ---- ----------- -
在这个示例中,我们定义了一个对象 person
,它有四个属性。然后我们使用剩余属性来取出其中的 name
和 age
属性,并将剩余的属性保存到 rest
变量中。接着我们使用扩展属性来将 person
对象中的所有属性合并到一个新对象 newPerson
中,并添加一个新属性 job
。
Promise.prototype.finally(Promise 的 finally 方法)
在 ES9 中,Promise
对象新增了一个 finally
方法。这个方法不管 Promise
对象最终是成功还是失败,都会执行指定的回调函数。这个特性可以让我们更加方便地处理 Promise
对象的状态。
下面是一个简单的示例,使用 Promise.prototype.finally
方法来处理 Promise
对象的状态:
-- -------------------- ---- ------- -------- ----------- - ------ ----------------------------------------------------- -------------- -- ---------------- ---------- -- - ------------------ ----- --- ---------------- ---- -------- -- ------------ -- --------------------- ----------- -- --------------------- ---- ------------- - ------------
在这个示例中,我们使用 fetch
方法来获取一个 JSON 数据,并在 then
方法中打印出数据并抛出一个错误。然后我们使用 catch
方法来捕获错误并打印出错误信息。最后我们使用 finally
方法来打印一个完成信息。
Conclusion(结论)
ES9 中有很多新增特性,本文只介绍了其中的一些。这些特性可以让我们更加方便地处理异步数据、对象和数组,并更加方便地处理 Promise
对象的状态。这些特性对于前端开发者来说,具有很大的学习和指导意义。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67414d0ad40a3cb159ea4ac8