千家信息网

ES6的Generator函数执行机制是什么

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"ES6的Generator函数执行机制是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"ES6的Generator函数执行机制是什么"
千家信息网最后更新 2026年11月03日ES6的Generator函数执行机制是什么

本篇内容主要讲解"ES6的Generator函数执行机制是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"ES6的Generator函数执行机制是什么"吧!

ES6 新引入了 Generator 函数,可以通过 yield 关键字,把函数的执行流挂起,为改变执行流程提供了可能,从而为异步编程提供解决方案。

Generator 函数组成

Generator 有两个区分于普通函数的部分

一是在 function 后面,函数名之前有个 * ;

函数内部有 yield 表达式。

其中 * 用来表示函数为 Generator 函数,yield 用来定义函数内部的状态。

function* func(){ console.log("one"); yield '1'; console.log("two"); yield '2';  console.log("three"); return '3';}

执行机制

调用 Generator 函数和调用普通函数一样,在函数名后面加上()即可,但是 Generator 函数不会像普通函数一样立即执行,而是返回一个指向内部状态对象的指针,所以要调用遍历器对象Iterator 的 next 方法,指针就会从函数头部或者上一次停下来的地方开始执行。

f.next();// one// {value: "1", done: false} f.next();// two// {value: "2", done: false} f.next();// three// {value: "3", done: true} f.next();// {value: undefined, done: true}

第一次调用 next 方法时,从 Generator 函数的头部开始执行,先是打印了 one ,执行到 yield 就停下来,并将yield 后边表达式的值 '1',作为返回对象的 value 属性值,此时函数还没有执行完, 返回对象的 done 属性值是 false。

第二次调用 next 方法时,同上步 。

第三次调用 next 方法时,先是打印了 three ,然后执行了函数的返回操作,并将 return 后面的表达式的值,作为返回对象的 value 属性值,此时函数已经结束,多以 done 属性值为true 。

第四次调用 next 方法时, 此时函数已经执行完了,所以返回 value 属性值是 undefined ,done 属性值是 true 。如果执行第三步时,没有 return 语句的话,就直接返回 {value: undefined, done: true}。

函数返回的遍历器对象的方法

next 方法

一般情况下,next 方法不传入参数的时候,yield 表达式的返回值是 undefined 。当 next 传入参数的时候,该参数会作为上一步yield的返回值。

next不传参

除了使用 next ,还可以使用 for... of 循环遍历 Generator 函数生产的 Iterator 对象。

return 方法

return 方法返回给定值,并结束遍历 Generator 函数。

return 方法提供参数时,返回该参数;不提供参数时,返回 undefined 。

遍历器对象抛出了两个错误,第一个被 Generator 函数内部捕获,第二个因为函数体内部的catch 函数已经执行过了,不会再捕获这个错误,所以这个错误就抛出 Generator 函数体,被函数体外的 catch 捕获。

yield* 表达式

yield* 表达式表示 yield 返回一个遍历器对象,用于在 Generator 函数内部,调用另一个 Generator 函数。

使用场景

实现 Iterator

为不具备 Iterator 接口的对象提供遍历方法。

Reflect.ownKeys() 返回对象所有的属性,不管属性是否可枚举,包括 Symbol。
jane 原生是不具备 Iterator 接口无法通过 for... of遍历。这边用了 Generator 函数加上了 Iterator 接口,所以就可以遍历 jane 对象了。

到此,相信大家对"ES6的Generator函数执行机制是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

函数 方法 对象 属性 参数 表达式 机制 普通 接口 错误 两个 内容 头部 指针 时候 状态 上一 并将 学习 实用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东万易互联网科技有限公司惠州分公司 广州大一互联网络科技有限公司 互联网 科技 宜安科技 互联网金融 碳银互联网科技有限公司 互联网 新科技 大白互联网科技 重庆科技学院互联网 互联网公司会议桌创意科技软装饰 华中科技有哪些互联网大佬 深圳国际航运科技和互联网 栖莱科技互联网股份有限公司 互联网校园科技培训 互联网经济与金融科技 恒生互联网科技指数跳水 银川新华互联网科技学校联系电话 保险科技服务互联网营销体系 浙南科技城互联网大厦招聘 北京互联网科技类企业分布 恒生科技指数 中概互联网 互联网金融科技 互联网佳科技有限公司 互联网 科技创新 上海致骋互联网科技 贵州叶脉互联网科技有限公司所属行业 重庆互联网医院沙龙医盟信息科技 图游互联网科技 下一代互联网重大应用科技园 神州科技互联网有限公司 互联网科技包装股
0