JavaScript生成器是用function定义的特殊函数,返回迭代器对象;yield暂停执行并返回值,next()恢复并可传入参数;yield委托其他可迭代对象,支持按需计算与异步流程控制。

JavaScript生成器是一种特殊函数,能暂停和恢复执行,适合处理异步操作、大数据流或需要按需计算的场景。yield 是它的核心关键字,用来“交出”当前值并暂停函数,等下次调用再从暂停处继续。
在 function 关键字后加一个星号 *,就定义了一个生成器函数。它不会立即执行,而是返回一个迭代器对象:
function* count() {
yield 1;
yield 2;
yield 3;
}
调用 count() 不会输出数字,只返回一个可迭代的对象,比如 const it = count();
立即学习“Java免费学习笔记(深入)”;
每次调用迭代器的 .next() 方法,生成器就运行到下一个 yield 表达式,返回一个形如 { value: ..., done: ... } 的对象:
yield 不只是“往外抛”,还能“往里收”。下一次调用 .next(value) 时传的参数,会成为上一个 yield 表达式的返回值:
本文档主要讲述的是Python开发网站指南;HTML是网络的通用语言,一种简单、通用的全置标记语言。它允许网页制作人建立文本与图片相结合的复杂页面,这些页面可以被网上任何其他人浏览到,无论使用的是什么类型的电脑或浏览器 Python和其他程序语言一样,有自身的一套流程控制语句,而且这些语句的语法和其它程序语言类似,都有for, if ,while 类的关键字来表达程序流程。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
2
function* echo() {
let input = yield 'ready';
yield 'you said: ' + input;
}
使用示例:
const e = echo();
e.next(); // { value: 'ready', done: false }
e.next('hello'); // { value: 'you said: hello', done: false }
用 yield* 可以把控制权“转交”给另一个可迭代对象(比如另一个生成器、数组、字符串),让它们依次产出值:
function* nums() { yield 1; yield 2; }
function* all() {
yield 'start';
yield* nums(); // 展开 nums 的所有 yield
yield 'end';
}
结果:'start' → 1 → 2 → 'end'
基本上就这些。yield 不是魔法,它让函数变成可中断的协作式流程,配合 for...of、扩展运算符([...gen()])、async/await(通过包装)能写出更清晰的逻辑。不复杂但容易忽略细节。
以上就是JavaScript生成器是什么_yield关键字怎么用?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号