ECMAScript 2018 新特性:异步迭代器、Rest/Spread 属性函数

阅读时长 4 分钟读完

异步迭代器

在异步编程中,经常需要遍历异步数据流进行操作。ES2018 引入了异步迭代器,可以方便的实现异步数据流的迭代。

异步迭代器是一个对象,它实现了 Symbol.asyncIterator 方法。该方法返回一个迭代器对象,该对象具有 next 方法,用来异步获取下一个值。

下面是一个简单的例子,通过异步迭代器实现对异步数据流的遍历。

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

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

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

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

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

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

----------

首先,通过 async function 异步获取数据,然后构造一个异步迭代器对象,该对象通过 Symbol.asyncIterator 方法实现。该方法返回一个迭代器对象,该对象具有 next 方法,用来异步获取下一个值。

使用 for await...of 循环遍历异步数据流,每次异步获取下一个值,直到数据流结束。

Rest/Spread 属性函数

Rest/Spread 属性函数是一个比较有用的语言特性,它可以更方便地处理对象和数组。

Rest 属性函数用来获取对象或数组的剩余部分,放到一个新的对象或数组中。Spread 属性函数用来将对象或数组展开,放到另一个对象或数组中。

Rest 属性函数

下面是 Rest 属性函数的简单示例。

在该示例中,使用了对象解构和数组解构语法,通过 ... 运算符获取对象或数组的剩余部分。得到了一个新的对象或数组。

Spread 属性函数

下面是 Spread 属性函数的简单示例。

在该示例中,使用了 Spread 运算符,将对象或数组展开,放到另一个对象或数组中。

此外,对象解构和数组解构语法也支持 Spread 运算符,可以将对象或数组中的属性值直接解构到另一个对象或数组中。

总结

异步迭代器和 Rest/Spread 属性函数是 ECMAScript 2018 小幅更新中较重要的特性。它们极大地简化了异步编程和处理对象和数组的过程,是前端开发人员必须掌握的知识。

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

纠错
反馈