ES9 | 理解遍历器的各种语法

阅读时长 5 分钟读完

在 JavaScript 中,遍历器(Iterator)是一个比较重要的概念。它可以让我们遍历数据结构中的元素,比如数组、对象、字符串等等。在 ES6 中,我们已经学习了很多关于遍历器的知识,比如使用 for...of 循环、调用默认的遍历器方法等等。而在 ES9 中,遍历器方面的语法进一步得到了扩展和加强,本文将详细介绍这些新特性。

1. 遍历器方法的异步处理

在 ES6 中,我们可以使用 for...of 循环遍历数组或者使用 Symbol.iterator 方法得到默认的遍历器。这些方法没有处理异步的需求。而在 ES9 中,我们可以使用新的异步 Iterator 语法来处理异步的遍历器。异步 Iterator 的实现需要两个部分:异步遍历器对象和异步 Iterator 方法。

异步遍历器对象:

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

异步 Iterator 方法:

使用这两个部分,我们可以遍历异步数据结构了:

在这个例子中,我们使用 asyncForEach 方法遍历 asyncIterable 对象,并在每个值上执行 callback 回调函数。注意,这里的 for await...of 循环是异步的,必须使用 async/await 语法来等待回调完成。

2. 对象的遍历器

除了数组和字符串,对象也可以被遍历器遍历。在 ES9 中,新的 Object.entries() 和 Object.values() 方法可以将一个对象转化为一个遍历器对象)。这个遍历器对象中每个元素都是一个数组,第一个元素是键,第二个元素是值。

在这个例子中,我们使用 Object.entries() 方法获取一个遍历器对象,然后通过 for...of 循环遍历它。每个元素都是一个包含键和值的数组。

3. Rest/Spread 参数

在 ES9 中,Rest 和 Spread 参数(用于函数参数的省略号语法)支持了对象和字符串的遍历器。这两个参数类型将被转换成可以被遍历器遍历的数据结构,使用方法同数组的 Rest/Spread 参数一样。

在这个例子中,我们使用了 Spread 参数将对象和字符串展开成了数组,便于遍历器遍历。

4. Promise.allSettled()

在 ES9 中,新增了 Promise.allSettled() 方法。它类似于 Promise.all() 方法,但不同的是 Promise.allSettled() 不会在任何一个 Promise 变成 rejected 状态时中止,并返回所有 Promise 的状态结果。

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

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

在这个例子中,我们使用 Promise.allSettled() 方法来处理一个可能会被 rejected 的 Promise。即使有一个 Promise 被拒绝了,Promise.allSettled() 也会返回所有 Promise 的状态结果。

总结

在 ES9 中,遍历器方面的语法得到了扩展和加强。我们学习了异步遍历器、对象的遍历器、Rest/Spread 参数的遍历器处理和 Promise.allSettled() 方法。这些新特性丰富了 JavaScript 的遍历器功能,可以帮助我们更加方便、高效地处理不同的数据结构。

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

纠错
反馈

纠错反馈