首页 > web前端 > js教程 > 正文

JavaScript生成器是什么_yield关键字怎么用?

php中文网
发布: 2025-12-14 12:31:32
原创
396人浏览过
JavaScript生成器是用function定义的特殊函数,返回迭代器对象;yield暂停执行并返回值,next()恢复并可传入参数;yield委托其他可迭代对象,支持按需计算与异步流程控制。

javascript生成器是什么_yield关键字怎么用?

JavaScript生成器是一种特殊函数,能暂停和恢复执行,适合处理异步操作、大数据流或需要按需计算的场景。yield 是它的核心关键字,用来“交出”当前值并暂停函数,等下次调用再从暂停处继续。

生成器函数怎么定义?

在 function 关键字后加一个星号 *,就定义了一个生成器函数。它不会立即执行,而是返回一个迭代器对象:

function* count() {
  yield 1;
  yield 2;
  yield 3;
}

调用 count() 不会输出数字,只返回一个可迭代的对象,比如 const it = count();

立即学习Java免费学习笔记(深入)”;

yield 怎么工作?

每次调用迭代器的 .next() 方法,生成器就运行到下一个 yield 表达式,返回一个形如 { value: ..., done: ... } 的对象:

  • it.next(){ value: 1, done: false }
  • it.next(){ value: 2, done: false }
  • it.next(){ value: 3, done: false }
  • it.next(){ value: undefined, done: true }(已耗尽)

yield 可以接收外部传入的值

yield 不只是“往外抛”,还能“往里收”。下一次调用 .next(value) 时传的参数,会成为上一个 yield 表达式的返回值:

Python开发网站指南 WORD版
Python开发网站指南 WORD版

本文档主要讲述的是Python开发网站指南;HTML是网络的通用语言,一种简单、通用的全置标记语言。它允许网页制作人建立文本与图片相结合的复杂页面,这些页面可以被网上任何其他人浏览到,无论使用的是什么类型的电脑或浏览器 Python和其他程序语言一样,有自身的一套流程控制语句,而且这些语句的语法和其它程序语言类似,都有for, if ,while 类的关键字来表达程序流程。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看

Python开发网站指南 WORD版 2
查看详情 Python开发网站指南 WORD版

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中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号