ES9(也称为 ES2018)是 ECMAScript 标准的第 9 版本,于 2018 年 6 月发布。虽然它没有像 ES6 那样带来太多令人兴奋的新功能,但它仍然添加了一些有用的特性,为前端开发人员提供了更好的工具。在本篇文章中,我们将探讨几个新增的特性,包括 for-await、Promise.prototype.finally() 等等。
for-await 循环
for-await 循环是 ES9 中最受欢迎的特性之一。它类似于 for-of 循环,但是适用于异步迭代器。异步迭代器是一个可迭代对象,其返回一个 Promise 对象,该 Promise 对象解析为 cursor.next()
返回的值。for-await 循环的工作原理类似于 async/await,但是对于同步和异步迭代器都有效。
下面是一个简单的示例,演示了如何使用 for-await 循环遍历异步生成器:
-- -------------------- ---- ------- ----- --------- ---------------- - ----- ------------------- ----- ------------------- ----- ------------------- - ----- -------- ------ - --- ----- ---- ----- -- ----------------- - ------------------- - - ------- -- ------- - - -
该示例定义了一个返回 Promise 对象的异步生成器。然后,我们使用 for-await 循环遍历生成器的值。由于异步生成器是异步的,因此 for-await 循环等待 Promise 对象的解析,并输出它们的值。
Promise.prototype.finally()
ES9 引入了 Promise.prototype.finally() 方法,它在 Promise 完成时执行回调函数。无论 Promise 对象最终是解决还是拒绝,该回调函数都会被调用。此方法可以用于清理资源或在 Promise 执行完成时执行某些操作。
下面是一个使用 Promise.prototype.finally() 的示例:
-- -------------------- ---- ------- ------------------ -------------- -- - ---------------- ------ -- - - -------- ------ ------ - -- -- ------------ -- ------------------ ----- --- -- ------ - - ----- ----------- -- --------------------- -- ------- --- ------ -- - -- ----
在这个示例中,我们创建了一个 Promise 并调用了它的 resolve() 方法。我们使用 .then() 处理程序处理 Promise 的结果, .catch() 处理程序处理错误。最后,我们使用 .finally() 处理程序,在 Promise 完成时执行一些操作。在这种情况下,它只是输出 Done。
其他新增特性
除了 for-await 循环和 Promise.prototype.finally() 之外,ES9 还有其他一些值得注意的新增特性:
- 标准库中,Object.entries() 和 Object.values() 现在支持原始值和对象。
- 正则表达式现在支持 Unicode 属性转义。
- 正则表达式现在支持命名捕获组。
- Spread 语法现在支持 Object。
总结
ES9 带来了一些有用的特性,这些特性将使前端开发人员更易于开发现代应用程序。for-await 循环和 Promise.prototype.finally() 特别有用,它们使异步编程更加容易和优雅。我们建议在你的项目中使用它们,并保持更新,以便知道其他有用的功能和改进。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/652ea8cb7d4982a6ebfb7869