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

js生成器中next的使用

冷炫風刃
发布: 2025-11-04 21:16:02
原创
380人浏览过
生成器函数通过function*定义,使用yield暂停执行,调用后返回生成器对象,其next()方法控制执行并返回{value, done}对象;1. next()启动或恢复执行,每次遇到yield时暂停并返回值;2. 第二次及之后的next(arg)可向yield传参,作为上一个yield表达式的返回值;3. return()强制结束生成器,后续调用均返回{value: undefined, done: true};4. throw()向生成器抛出异常,可在内部捕获;5. 生成器常用于异步流程控制,配合Promise实现类似async/await的效果。

js生成器中next的使用

在 JavaScript 中,生成器(Generator)是一种特殊函数,能够暂停执行并返回中间结果。它通过 *function 定义,并使用 yield 暂停。调用生成器函数后会返回一个生成器对象,该对象具有 next() 方法,用于控制函数的执行流程。

next() 的基本用法

每次调用 next() 时,生成器会从上次暂停的位置继续执行,直到遇到下一个 yield 或函数结束。

next() 返回一个对象,包含两个属性:

  • value:当前 yield 表达式的值或 return 的值
  • done:布尔值,表示生成器是否已执行完毕

function* simpleGen() {
  yield '第一项';
  yield '第二项';
  return '结束';
}

const gen = simpleGen();
console.log(gen.next()); // { value: '第一项', done: false }
console.log(gen.next()); // { value: '第二项', done: false }
console.log(gen.next()); // { value: '结束', done: true }

向 next() 传参

next() 可以接收参数,这个参数会作为上一个 yield 表达式的返回值。

注意:第一次调用 next() 时传参无效(因为没有前一个 yield),通常第一次调用不传参。

function* genWithInput() {
  const input1 = yield '等待输入1';
  const input2 = yield 收到:${input1};
  return 最终:${input2};
}

const g = genWithInput();
console.log(g.next()); // { value: '等待输入1', done: false }
console.log(g.next('A')); // { value: '收到:A', done: false }
console.log(g.next('B')); // { value: '最终:B', done: true }

next() 与异步流程控制

生成器常用于简化异步操作,配合 Promise 使用,实现类似 async/await 的效果。

虽然现代开发更多使用 async/await,但理解这种模式有助于深入掌握 JS 异步机制。

uBrand Logo生成器
uBrand Logo生成器

uBrand Logo生成器是一款强大的AI智能LOGO设计工具。

uBrand Logo生成器 57
查看详情 uBrand Logo生成器

function* asyncGen() {
  const user = yield fetch('/user');
  const posts = yield fetch(/posts?uid=${user.id});
  return posts;
}

上面代码中,next() 配合外部执行器可逐步解析每个异步请求。

异常处理与提前终止

除了 next(),生成器还支持 throw() 和 return() 方法。

调用 return() 会强制让生成器进入完成状态,后续 next() 均返回 { value: undefined, done: true }。

throw() 可向生成器注入错误,可在函数内用 try/catch 捕获。

基本上就这些。next() 是驱动生成器运行的核心方法,掌握其行为对理解生成器机制至关重要。

以上就是js生成器中next的使用的详细内容,更多请关注php中文网其它相关文章!

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

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

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

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