javascript 中的生成器函数是一种特殊类型的函数,可以在执行过程中暂停和恢复。它使用 function* 语法定义,并使用yield 关键字顺序生成值。
生成器函数的主要特征
- 用 函数* 定义:
function* generatorfunction(){
yield 1;
yield 2;
yield 3;
yield 4;
}
2.返回一个迭代器
- 当调用生成器函数时,它不会立即执行。 相反,它返回一个迭代器对象。
- 迭代器有一个 next() 方法,用于控制
执行。
- 产量关键字:
- yield 关键字用于生成一个值并暂停生成器。
- 当再次调用 next() 时,生成器从 暂停的地方。
生成器函数示例:
function* generatorfunction(){
console.log("start");
yield 1;
console.log("resume");
yield 2;
console.log("end");
}
const gen = generatorfuntion();
console.log(gen.next());
console.log(gen.next());
console.log(gen.next());
输出
start
{value: 1, done: false}
Resume
{value: 2, done: false}
End
{Value: undefined, done: true}
它是如何运作的
- next() 上的执行:
- 当第一次调用next()时,生成器启动 执行并运行直到第一个yield。
- 它返回对象{value,done},其中:
- value:yield产生的价值。
- done:一个布尔值,指示生成器是否已完成
- 暂停和恢复。
- 函数遇到yield时暂停执行。
- 当再次调用 next() 时,它会从暂停处恢复。
- 完成:
- 当生成器函数完成时,done 属性变为 是的。










