当前位置: 首页 > news >正文

ES6初步了解生成器

生成器函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同
语法: function * fun(){ }

    function * gen(){console.log("hello generator");}let iterator =gen()console.log(iterator)

打印:
在这里插入图片描述
我们发现没有打印”hello generator“
我们需要使用到next方法
如果大家对迭代器感兴趣大家可以阅读这篇ES6初步了解迭代器

    function * gen(){console.log("hello generator");}let iterator =gen()iterator.next()

在这里插入图片描述
我们可以使用yield,可以看作是函数代码的分隔符

    function * gen(){console.log(111)yield "hello"console.log(222)yield "generator"console.log(333)yield "!"console.log(444)}let iterator =gen()iterator.next() //111iterator.next() //222iterator.next() //333iterator.next() //444

我们也可以使用for…of来遍历

    function* gen() {yield "hello"yield "generator"yield "!"}for (let v of gen()) {console.log(v)}

在这里插入图片描述

生成器函数的参数传递

    function* gen(arg) {console.log(arg)yield 111yield 222yield 333}// 执行获取迭代器对象let iterator = gen("aaa")console.log(iterator.next()) 

在这里插入图片描述

next方法可以传入实参

    function* gen(arg) {console.log(arg) //AAAlet one = yield 111console.log(one) //BBBlet two = yield 222console.log(two) //CCClet three = yield 333console.log(three) //DDD}// 执行获取迭代器对象let iterator = gen("AAA")console.log(iterator.next())// 第二次调next方法传入这个实参作为第一个yield语句的返回结果console.log(iterator.next("BBB"))// 第三次调next方法传入这个实参作为第二个yield语句的返回结果console.log(iterator.next("CCC"))// 第四次调next方法传入这个实参作为第三个yield语句的返回结果console.log(iterator.next("DDD")) // 以此类推

在这里插入图片描述
感谢大家的阅读,如有不对的地方,可以向我指出,感谢大家!

http://www.lryc.cn/news/205391.html

相关文章:

  • 飞桨大模型套件:一站式体验,性能极致,生态兼容
  • 【C++入门到精通】哈希 (STL) _ unordered_map _ unordered_set [ C++入门 ]
  • 创建 Edge 浏览器扩展教程(上)
  • container_of解析及应用
  • 搜维尔科技:Varjo-最自然和最直观的互动
  • Postman环境配置
  • Windows下Eclipse C/C++开发环境配置教程
  • 深入 Maven:构建杰出的软件项目的完美工具
  • 一文了解企业云盘和大文件传输哪个更适合企业传输
  • 在 history 模式下,为什么刷新页面会出现404?
  • 第二证券:“华为概念股”,怒刷13连板
  • 黑豹程序员-架构师学习路线图-百科:API接口测试工具Postman
  • 开源博客项目Blog .NET Core源码学习(5:mapster使用浅析)
  • Appium移动端自动测试框架,如何入门?
  • 外汇天眼:喜大普奔!困扰投资者的交易问题解决了!
  • UUID转16字节数组(Java)
  • 使用vue3 搭建一个H5手机端访问的项目
  • 【网络安全 --- 任意文件下载漏洞(1)】任意文件下载漏洞
  • 驱动开发day4(实现通过字符设备驱动的分布实现编写LED驱动,实现设备文件的绑定)
  • 《深入浅出.NET框架设计与实现》阅读笔记(一)
  • Flutter 类似onResume 监听,解决入场动画卡顿(2)
  • rabbitmq-3.8.15集群、集群镜像模式安装部署
  • import导入顺序杂乱的问题
  • Hadoop3教程(二十六):(生产调优篇)NameNode核心参数配置与回收站的启用
  • PaddleX场景实战:PP-TS在电压预测场景上的应用
  • pdf误删恢复如何恢复?分享4种恢复方法!
  • 简析新能源汽车充电桩设计与应用
  • Java零基础入门-算术运算符
  • java实现hbase数据导出
  • Unity之ShaderGraph如何实现旋涡效果