ES6 生成器 / 迭代器

生成器

yield

function * xxx() {
  yield Promise.resolve('海胆')
  yield '海星'
}

.next() 每次访问一个 yield
在这里插入图片描述

迭代器

Symbol.iterator 对可便利对象创建一个迭代器
通过.next() 方法向下迭代

{
  value:当前元素值,
  done:true/false // 是否到达最后
}

调用 迭代器 实现遍历
在这里插入图片描述
valueSymbol.iterator 获取迭代器并调用

for of 迭代器语法糖

== 一般对象(没有迭代器)不能用 for of==
但可以自定义实现迭代器
在这里插入图片描述
在这里插入图片描述

解构 和 数组... 的底层原理也是调用 Symbol.iterator()
对象解构不是调用 Symbol.iterator()

posted @ 2021-06-18 14:10  海胆Sur  阅读(13)  评论(0)    收藏  举报  来源