ECMAScript 2018(ES9)中 Iterable 和 Iterator 的应用

阅读时长 4 分钟读完

ECMAScript 2018(ES9)中 Iterable 和 Iterator 的应用

在 ECMAScript 2015(ES6)中,JavaScript 引入了可迭代对象(Iterable)和迭代器(Iterator)这两个新的概念,它们的出现使得 JavaScript 中的数据遍历变得更加简单和灵活。而在 ECMAScript 2018(ES9)中,Iterable 和 Iterator 也得到了更新和完善。

Iterable 和 Iterator 的概念

Iterable 对象是指实现了 @@iterator 方法的对象,该方法返回一个迭代器对象。而迭代器对象则是一个带有 next 方法的对象,每一次调用 next 方法都会返回一个包含 done 和 value 两个属性的对象,其中 done 代表迭代器是否已经结束,value 是当前迭代到的值。

ES6 中的 for-of 循环和解构赋值都是基于 Iterable 和 Iterator 内置的特性实现的。例如,我们可以用 for-of 循环来遍历一个数组或字符串,并获取其中的每一个值。

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

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

Iterable 和 Iterator 的更新

在 ECMAScript 2018(ES9)中,Iterable 和 Iterator 的应用得到了进一步的扩展和完善。其中,新增了两个内置的方法:Symbol.asyncIterator 和 for-await-of 循环。

Symbol.asyncIterator

Symbol.asyncIterator 方法返回一个对象,该对象实现了异步迭代器(AsyncIterator)的逻辑。异步迭代器和普通迭代器的区别在于,next 方法返回的是一个 Promise 对象,可以通过 await 等待异步操作的完成。

以下是一个使用 Symbol.asyncIterator 方法的示例:

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

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

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

for-await-of 循环

for-await-of 循环是用于异步迭代器的循环语句。对于一个实现了异步迭代器的对象,我们可以通过 for-await-of 循环来遍历其值。

以下是一个使用 for-await-of 循环的示例:

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

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

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

学习和指导意义

ES9 中的 Iterable 和 Iterator 的应用为 JavaScript 的异步编程提供了更多便利和灵活性。除了 Symbol.asyncIterator 和 for-await-of 循环之外,ES9 中还新增了一些其他的实用方法,如 Object.entries 和 Object.values。这些都是在实际项目中非常有用的特性,对于初学者来说,深入学习和理解这些新特性的应用场景,可以提高编写 JavaScript 代码的效率和质量。

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

纠错
反馈

纠错反馈