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 属性变为 是的。