生成器函数是 JavaScript 中用 function* 声明、通过 yield 暂停执行并返回迭代器对象的特殊函数,支持惰性求值、双向通信和可迭代协议。

生成器函数是 JavaScript 中一种特殊的函数,它能暂停和恢复执行,让你手动控制函数内部的运行节奏。它不是一次性跑完,而是一步一步“交出控制权”,每次只执行到一个 yield 就停下来,等你下次调用再继续——这种能力特别适合处理异步流程、惰性求值、状态机或分段数据处理。
生成器函数的基本写法和调用方式
生成器函数用 function* 声明(星号可紧贴 function 或函数名),内部用 yield 暂停执行。调用它不会立即运行,而是返回一个迭代器对象,你需要手动调用 next() 方法来驱动执行。
例如:
function* count() {
console.log('start');
yield 1;
console.log('after first yield');
yield 2;
return 'done';
}
<p>const it = count(); // 不执行函数体,只创建迭代器
console.log(it.next()); // { value: 1, done: false }
console.log(it.next()); // { value: 2, done: false }
console.log(it.next()); // { value: 'done', done: true }</p>登录后复制
注意:yield 后面的表达式只在 next() 被调用时才求值,实现真正的惰性计算。
立即学习“Java免费学习笔记(深入)”;
用 next() 传值,让生成器“接收外部输入”
next(value) 的参数会作为上一个 yield 表达式的返回值。这使得生成器可以和调用方双向通信,像一个可控的协程。
标签: javascript java js ai 区别
还木有评论哦,快来抢沙发吧~