ECMAScrpt 2018:异步生成器、Promise.prototype.finally() 和 Rest/Spread 操作符

阅读时长 4 分钟读完

ECMAScript 2018(简称 ES2018)是 JavaScript 的最新版本,其中推出了一些新的功能和特性,本文将重点介绍异步生成器、Promise.prototype.finally() 和 Rest/Spread 操作符。

异步生成器

异步生成器是 ES2018 中的一个新特性,它允许我们在生成器函数中使用异步操作。换句话说,异步生成器可以返回异步迭代器。

在异步生成器中,我们可以使用 yield 关键字来暂停迭代并返回一个 Promise 对象。在异步操作完成后,我们可以使用 await 关键字来恢复迭代。下面是一个简单的例子:

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

------ -- -- -
  --- ----- ---- --- -- ----------------- -
    -----------------
  -
-----
------ - -
展开代码

在上面的例子中,asyncGenerator() 函数返回了一个异步迭代器。在 for await 循环中,我们可以使用 await 关键字来等待异步生成器返回的 Promise 对象,并使用 yield 暂停迭代。当异步操作完成后,我们可以使用 await 关键字来恢复迭代。

Promise.prototype.finally()

在早期版本的 JavaScript 中,我们经常需要在 Promise 中添加 finally 回调,以确保在 Promise 完成后始终执行一些操作。

ES2018 中,Promise 对象已经添加了 finally 方法。该方法接受一个回调函数作为参数,无论 Promise 成功还是失败,该回调函数都会被执行。

下面是一个示例代码:

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

-----------------------
  ---------- -- -------------------
  ----------- -- -------------------- ------------
---------- ------- --------
展开代码

在上面的代码中,我们使用 Promise.resolve()Promise.reject() 创建了两个 Promise 对象。在第一个 Promise 中,我们使用 then 方法来输出 Promise 的返回值,并使用 finally 方法来输出字符串。在第二个 Promise 中,我们使用 catch 方法来输出 Promise 的错误信息,并使用 finally 方法来输出字符串。

Rest/Spread 操作符

在 ES6 中,我们已经学习了 Rest 和 Spread 操作符,它们可以让我们轻松地操作数组和对象。在 ES2018 中,Rest/Spread 操作符已经添加了对对象字面量的支持。

下面是一个简单的例子:

在上面的代码中,我们使用 ... 操作符将一个对象解构为一个对象字面量,在后面添加一个新的键值对。我们还可以使用 ... 操作符将多个对象字面量合并为一个对象字面量。

总结

在本文中,我们了解了 ES2018 中的三个新特性: 异步生成器、Promise.prototype.finally() 和 Rest/Spread 操作符,并给出了相应的示例代码。学习这些新特性可以让我们在编写 JavaScript 时更加灵活和高效。

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

纠错
反馈

纠错反馈