一文看全 ECMAScript 2019 – 从语言层面上支持我们的异步任务

阅读时长 3 分钟读完

在前端技术的发展过程中,异步编程逐渐成为了一种必要的技能。为了更好地支持异步任务,ECMAScript 2019(以下简称 ES2019)引入了一些新特性。本文将详细介绍这些特性,为前端开发者提供学习和指导。

Promise.prototype.finally()

在 ES2018 中,我们可以使用 Promise.prototype.catch() 方法来处理 Promise 对象的异常。但是,该方法无法处理 Promise 对象正常完成时的回调。因此,在 ES2019 中,Promise.prototype.finally() 方法被加入,用于处理 Promise 完成时的回调。

上面的代码中,无论 Promise 是否成功执行,都会执行 finally 中的回调。

catch() 和 finally() 可以链式调用

在 ES2019 中,我们可以链式调用 catch() 和 finally() 方法:

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

上述代码会输出 “catch” 和 “finally”。由于 catch() 方法返回的也是一个 Promise,因此 finally() 方法也可以被链式调用。

具名捕获组

在正则表达式中,我们常常使用捕获组来获取匹配的子字符串。ES2018 引入了捕获组的概念,使我们能够获取匹配的子字符串。但是,在需要获取子字符串的场景下,捕获组的名称可能没有明确的意义,会带来困惑。因此,在 ES2019 中,我们可以使用具名捕获组来更好地描述这些子字符串。

上述代码中,我们使用了具名捕获组来获取日期字符串的年、月、日。

for-await-of 循环

在 ES2018 中,我们可以使用 for-of 循环来遍历可迭代对象的元素。但是,该循环不能用于异步任务。为了更好地支持异步任务,ES2019 中引入了 for-await-of 循环,用于遍历异步任务中迭代器的元素。

上述代码中,我们在异步函数 asyncFunc() 中使用 for-await-of 循环来遍历 Promise 对象数组 arr。

总结

本文介绍了 ES2019 中引入的一些新特性,包括 Promise.prototype.finally()、catch() 和 finally() 方法可以链式调用、具名捕获组和 for-await-of 循环。通过学习这些新特性,我们可以更好地支持异步任务,并在实际开发中获得更好的体验。

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

纠错
反馈