【ES6】Generator函数

2023-11-13


一、声明Generator函数

Generator函数,又称生成器函数,是ES6的一个重要的新特性。
普通函数用function来声明,Generator函数用function*声明。
Generator函数函数内部有新的关键字:yield( 产出),普通函数没有。

    // 1.generator函数声明
    function* fn() {
        console.log('案例测试1');
        yield '1'
        console.log('案例测试2');
        yield '2'
        console.log('案例测试3');
    }

二、调用

返回一个iterator对象,对象里面有个next()方法,返回一个对象,里面有value ,done, value代表yield后面的值。

    // 2.调用
    var gen = fn()
    console.log(gen.next());  // 案例测试1  {value: '1', done: false}
    console.log(gen.next());  // 案例测试2 {value: '2', done: false}
    console.log(gen.next());  // 案例测试3  {value: undefined, done: true}
    console.log(gen.next());  // {value: undefined, done: true}

三、next()

next()方法可以接受一个参数,它的参数作为上一个yeild的返回值。

    // 3.next()方法可以接受一个参数,它的参数作为上一个yeild的返回值
    function* fn_1() {
        console.log('1');
        let res = yield 'a'
        // console.log(res);
        let res_1 = yield res
        yield res_1
    }
    let gen_1 = fn_1()
    console.log(gen_1.next());  // 1 {value: 'a', done: false}
    console.log(gen_1.next('b'));  // {value: 'b', done: false}
    console.log(gen_1.next('c'));  // {value: 'c', done: false}

四、yield*

从其他函数调用另一个函数,用yield*

    // 4.从其他函数调用另一个函数,用yield* 
    function* fn_2() {
        console.log('a');
    }
    function* fn_3() {
        console.log('b');
    }
    function* fn_4() {
        yield* fn_2()
        yield* fn_3()
        console.log('c');
    }
    var newGen = fn_4()
    newGen.next()   // a  b  c

五、return与yield区别

return:后面的语句不执行
yield:后面的语句执行,通过调用next()继续执行


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【ES6】Generator函数 的相关文章

  • 从 thymeleaf 获取数据到模态引导程序、jquery

    我正在尝试获取模态视图的 id 这是为了更新 onclick 元素 但我找不到方法 知道如何为 boostrap 5 完成此操作 或我可以用其他方法吗 谢谢 tr a inactivate a div class modal fade mo
  • 将 OoXml 插入单词抛出错误:未知

    我一直在尝试通过office js将OOXML插入到word文档的正文内容中insertOoXML 方法 我什至尝试过最简单的实现 认为我在尝试替换 XML 本身中的 fieldCodes 时做了一些不正确的事情 所有结果都是这样Error
  • JavaScript onTouch 不工作

    谁能告诉我为什么这个 onTouch 处理程序没有触发 var myDiv document getElementById existingContent var myButton a href log out a myDiv append
  • 了解设置 JQuery 变量

    了解设置 JQuery 变量 最近 我通过在 StackOverflow 上遇到的另一个问题寻找帮助 了解到如何设置 JQuery 变量 如下所示 您可以通过简单地调用变量来创建输入字段 并且锚变量似乎也定义了样式 var clicked
  • 尝试将布尔 C# 变量传递给 javascript 变量并将其设置为 true

    在我的 aspx 页面中 我将布尔变量 C 传递给需要布尔类型的 javascript 函数 但遇到了问题 但是 C 变量返回 True 而 javascript 不喜欢大写 myjavascript 如果我将 c 变量转换为字符串 那么我
  • TypeError: props.render 不是一个函数(React hook 形式)

    我将方法作为我用react hook form制作的形式的道具传递 当从react hook form添加控制器时 它给了我 TypeError props render不是一个函数 我在网上找不到任何解决方案 因此感谢任何帮助 impor
  • 解析“流”JSON

    我在浏览器中有一个网格 我想通过 JSON 将数据行发送到网格 但浏览器应该在接收到 JSON 时不断解析它 并在解析时将行添加到网格中 换句话说 在接收到整个 JSON 对象后 不应将行全部添加到网格中 应该在接收到行时将其添加到网格中
  • 如何重置使用 JavaScript 更改的 CSS 属性?

    我的导航按钮的宽度从 100px 增加到 150px 当鼠标悬停在 nav li hover width 150px 但是使用 javascript 我已经做到了 无论选择哪个选项 宽度都将继续为 150px 当选择每个选项时 它会使其他选
  • 使用 useReducers 调度函数发送多个操作?

    使用时是否可以通过调度函数发送多个动作useReducer挂钩反应 我尝试向它传递一组操作 但这会引发未处理的运行时异常 明确地说 通常会有一个初始状态对象和一个减速器 如下所示 const initialState message1 nu
  • 标签获取 href 值

    我有以下 html div class threeimages a img alt Australia src Images Services 20button tcm7 9688 gif a div class text h2 a hre
  • Meteor - 从客户端取消服务器方法

    我正在通过服务器方法执行数据库计数 用户可以选择他们希望如何执行计数 然后调用该方法 我的问题是 计数可能需要一些时间 并且用户可能会在方法运行时改变主意并请求不同的计数 有什么方法可以取消调用的方法并运行新的计数吗 我认为 this un
  • 在javascript中解析json - 长数字被四舍五入

    我需要解析一个包含长数字的 json 在 java servlet 中生成 问题是长数字被四舍五入 当执行这段代码时 var s x 6855337641038665531 var obj JSON parse s alert obj x
  • 将div设置为隐藏,延时后可见

    我试图在 X 时间后 也许甚至在随机时间之后 但现在我们只做固定时间 在黑色背景上出现一个黄色方块 function initialSetup if document getElementById yellow null document
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • 如何在react-native中获取Text组件的onPress值

    我是一名新的 React Native 开发人员 我想使用 onPress 获取 Text 组件的值并将其传递给函数
  • 提交表单并重定向页面

    我在 SO 上看到了很多与此相关的其他问题 但没有一个对我有用 我正在尝试提交POST表单 然后将用户重定向到另一个页面 但我无法同时实现这两种情况 我可以获取重定向或帖子 但不能同时获取两者 这是我现在所拥有的
  • 为什么在 Internet Explorer 中访问 localStorage 对象会引发错误?

    我正在解决一个客户端问题 Modernizr 意外地没有检测到对localStorageInternet Explorer 9 中的对象 我的页面正确使用 HTML 5 文档类型 并且开发人员工具报告该页面具有 IE9 的浏览器模式和 IE
  • FireFox 中的自动滚动

    我的应用程序是实时聊天 我有一个 Div 来包装消息 每条消息都是一个 div 所以 在几条消息之后 我的 DOM 看起来像这样 div div Message number two div div div div
  • Safari 支持 JavaScript window.onerror 吗?

    我有一个附加到 window onerror 的函数 window onerror function errorMsg url line window alert asdf 这在 firefox chrome 和 IE 中工作正常 但在 s
  • fullCalendar 未显示正确的结束日期

    我正在看调试页面 http jsbin com wukofacaxu edit js outputFullCalendar 官方网站的 我想安排一个活动时间为 22 09 2015 至 30 09 2015 dd mm yyyy 但它只显示

随机推荐

  • 制度汇编格式怎么生成目录_怎么用word制作标书?大神般操作经验在这里

    怎么用word制作标书 word制作标书是每一个制作标书的制标员 如何用我们常用的办公软件来制作标书呢 除了将必要的材料编写入里面 还需要注意格式 字体等固定排版问题 如果你还是一枚制作标书的新人 请一起来和保标招标网小编学习怎么用word
  • python常用内置库时间,日期与JSON转换

    日期与时间 datetime是Python处理日期和时间的标准库 from datetime import datetime if name main cur date datetime now print cur date print c
  • jenkins使用root账号

    1 修改配置文件 编辑配置文件 vim etc sysconfig jenkins 修改 JENKINS USER JENKINS USER root 2 修改相关文件夹为root权限 chown R root root var lib j
  • 数据仓库-数据分层理论详解

    主题 Subject 是在较高层次上将企业信息系统中的数据进行综合 归类和分析利用的一个抽象概念 每一个主题基本对应一个宏观的分析领域 在逻辑意义上 它是对应企业中某一宏观分析领域所涉及的分析对象 例如 销售分析 就是一个分析领域 因此这个
  • 蓝桥杯2017届C++B组省赛真题 分巧克力

    儿童节那天有K位小朋友到小明家做客 小明拿出了珍藏的巧克力招待小朋友们 小明一共有N块巧克力 其中第i块是Hi x Wi的方格组成的长方形 为了公平起见 小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们 切出的巧克力需要满足 1 形状
  • 1、常用DOS命令大全

    一 DOS DiskOperatingSystem 磁盘操作系统 特点 单任务 单用户系统 使用命令行方式 控制计算机 二 DOS命令行的组成 1 DOS命令行中的基本概念 当前驱动器 当前盘 当前目录 相对路径 绝对路径 2 DOS命令的
  • 基于点云的3D障碍物检测

    基于点云的3D障碍物检测 主要有以下步骤 点云数据的处理 基于点云的障碍物分割 障碍物边框构建 点云到图像平面的投影 点云数据的处理 KITTI数据集 KITTI数据集有四个相机 主要使用第三个相机 序号为02 拍摄的图片 标定参数和标签文
  • I/O管理及监控命令

    一 磁盘原理 简单理解 1 盘片以每分钟数千转到上万转的速度在高速旋转 15K 10K 7 5K 5 2K RPM 2 磁头就能对盘片上的指定位置进行数据的读写操作 3 磁头磁化磁盘记录数据 4 从外到里存储 外快内慢 5 以扇区为单位存储
  • python-selenium-动作链拖拽;cookies处理

    1 动作链拖拽 导入动作链需要的包 from selenium webdriver import ActionChains 具体步骤 1 创建动作链对象 并绑定给浏览器 action ActionChains driver 2 点击并长按指
  • 停止IIS服务

    1 第一步 停止 World Wide Web Publishing Service 这个是W3C服务 2 第二部 停止 IIS Admin Service 这个IIS元数据管理服务 转载于 https www cnblogs com xi
  • 非接触IC卡中typeA卡和typeB卡的区别--总结,二者的调制方式和编码方式不同

    1 非接触式IC卡的国际规范ISO IEC14443的由来 在非接触式IC卡的发展过程中 这些问题逐渐被解决并形成通用的标准 体现在现在的射频IC卡的设计上 国际标准化组织 ISO 和国际电子技术委员会 IEC 为期制定了相应的非接触式IC
  • 虚拟主机的配置

    三种虚拟主机的配置 开启apache服务 编写环境变量 root localhost vim etc profile d httpd sh export PATH usr local apache bin PATH root localho
  • kettle表数据比较

    使用合并记录组件 我的kettle死活不能保存中文 唉 其中tab in 1和tab in 2代表两个数据源 合并记录 新旧数据源可随意指定 获取需要对比的字段 此处为了对比将比较记录先放在file中 identical 比较的所有字段相同
  • PPTP - GRE

    PPTP GRE PPTP Point to Point Tunneling Protocol 点对点隧道协议 GRE Generic Routing Encapsulation 通用路由封装 PPTP 的连接过程如下图 PPTP 可以用于
  • Python和Java读写文件的对比

    博主平时用Python比较多 最近因为工作需要使用Java编程 比较之下 发现Python读写文件真是太方便了 Java读写文件非常繁琐 简直让人抓狂 Python读写文件的语句 读文件 with open readFile r as in
  • 小程序实现毛玻璃的效果

    利用css的filter这个属性实现 在有弹框弹出的时候背景出现高斯模糊的效果 写个小例子记录一下 这个是背景是地图的情况下 做的处理 不管是文字还是图片什么的 在弹出框出来的时候给背景添加filter blur 20rpx 中间值的模糊程
  • Linux虚拟机sqlite数据库安装教程、命令实现sqlite

    参考 Linux虚拟机sqlite数据库安装教程 作者 图触靓 发布时间 2021 04 08 19 07 56 网址 https blog csdn net bhbhhyg article details 115528254 一 在官网下
  • Spark性能调优之广播变量

    一 背景 举例来说 虽然是举例 但是基本都是用我们实际在企业中用的生产环境中的配置和经验来说明的 50个executor 1000个task 一个map 10M 默认情况下 1000个task 1000份副本 10G的数据 网络传输 在集群
  • 帆软报表FineReport中数据连接之Tomcat配置JNDI连接

    1 问题描述 在帆软报表FineReport中 通过JNDI方式定义数据连接 首先在Tomcat服务器配置好JNDI 然后在设计器中直接调用JNDI的名字 即可成功使用JNDI连接 连接步骤如下 2 实现步骤 使用版本及环境 下面以Wind
  • 【ES6】Generator函数

    文章目录 一 声明Generator函数 二 调用 三 next 四 yield 五 return与yield区别 一 声明Generator函数 Generator函数 又称生成器函数 是ES6的一个重要的新特性 普通函数用functio