generator

Generator应该被称为迭代生成器,涉及的概念:

Generator函数的作用是

  • 产生迭代器对象
  • 维护迭代器的状态

例如:

function* test() {
    yield 1
    yield* [1, 2]
}
const result = test()

test为Generator函数,result为返回的迭代器对象,yield为执行暂停关键词。

ES6中,默认内置迭代器对象的类型有String,Array,TypedArray,Map 和 Set 都内置可迭代对象,因为它们的原型对象都有一个 Symbol.iterator 方法。:

var myIterable = {}
myIterable[Symbol.iterator] = function* () {
    yield 1
    yield 2
    yield 3
}

for (let k of myIterable) {
    console.log(k)  // 1, 2, 3
}

yield*可以暂停执行另一个拥有迭代器的对象,例如:

function* test() {
    yield 1
}

function* test2() {
    yield* test()
}
const result = test2()
result.next()
// {value: 1, done: false}

参考


Author: Juntech
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source Juntech !
评论
  TOC