目录
Generator(译为生成器) 是 ES6 新增的一种函数类型,它可以返回一个迭代器对象,通过遍历迭代器对象可以逐个取出 Generator 函数内部的值。之所以被称为『生成器』,是因为它可以按照一定的规则逐个生成值,每个值可以被看作是生成器的状态。
Generator 函数使用 function*
声明,其中通过 yield
关键字产生一个值,并挂起函数的执行,等待下一次遍历继续执行。在遍历完成或通过 return
关键字指定函数返回值后,迭代器对象会被标记为“完成”。
function* generator() {
yield 'one';
yield 'two';
return 'done';
}
const iterator = generator();
console.log(iterator); //generator {<suspended>}
console.log(iterator.next()); //{ value: 'one', done: false }
console.log(iterator.next()); //{ value: 'two', done: false }
console.log(iterator.next()); //{ value: 'done', done: true }
运行结果如下:
在上述代码中,我们定义了一个简单的 Generator 函数,并通过调用 next()
方法逐一遍历迭代器对象。当运行到 return
语句时,迭代器对象会被标记为“完成”,不再产生新的值。