迭代器Iterator、生成器Generator详解

简介: 迭代器Iterator、生成器Generator详解

在讲Generator(生成器)之前,要先一起了解一下另外一个概念,迭代器

一、迭代器 Iterator

迭代器Iterator 是 ES6 引入的一种新的遍历机制,同时也是一种特殊的对象,它具有一些专门为迭代过程设计的专有接口;


每一个迭代器对象 都有一个 next() 方法,每次调用都会返回一个当前结果对象。


当前结果对象中有两个属性:


       1.value:  当前属性的值


       2.done:  用于判断是否遍历结束,当没有更多可返回的数据时,返回 true


       每调用一次 next() 方法,都会返回下一个可用的值,知道遍历结束。

二、生成器 Generator

生成器是一种返回迭代器的函数,通过 function 关键字后的( * )来表示,函数中会用到新的关键字 yield 。星号可以紧挨着 function 关键字,也可以在中间添加一个空格。

function* generator(){
    const list = [1,2,3];
    for(let i of list){
        yield i
    }
}
let g = generator();
console.log(g.next()); // {value: 1, done: false}
console.log(g.next()); // {value: 1, done: false}
console.log(g.next()); // {value: 1, done: false}
console.log(g.next()); // {value: 1, done: true}

三、特性

1. 每当执行完一条 yield 语句后函数就会自动停止运行,直到再次调用 next();


2. yield 关键字只可在生成器(Generator)内部使用,在其他地方使用会导致程序抛出错误;


3. 可以用函数表达式来创建生成器,但是不能使用箭头函数


比较常用的地方是在 stream 数据流处理的时候,会用到迭代器!

20210527153548522.png

20210527153548522.png

20210527153548522.png

20210527153548522.png

相关文章
|
关系型数据库 Linux PostgreSQL
这个错误是因为Flink CDC在尝试访问PostgreSQL的"decoderbufs"文件时,发现该文件不存在
【1月更文挑战第23天】【1月更文挑战第111篇】这个错误是因为Flink CDC在尝试访问PostgreSQL的"decoderbufs"文件时,发现该文件不存在
445 11
|
10月前
|
监控 持续交付 API
深入理解云计算中的微服务架构:原理、优势与实践
深入理解云计算中的微服务架构:原理、优势与实践
461 83
|
10月前
|
自然语言处理 安全 项目管理
提高工作效率的关键:2024年10款最实用日程管理软件推荐
随着工作节奏加快,日程管理成为职场和个人生活中的重要部分。2024年,市场上出现了众多高效日程管理软件,既包括适合企业团队协作的强大工具,也涵盖了帮助个人优化日程的轻量级应用。本文推荐10款最受欢迎的日程管理软件,覆盖国内外多个工具,帮助用户挑选最适合自己的那一款,从而提高工作效率和生活质量。
1543 0
提高工作效率的关键:2024年10款最实用日程管理软件推荐
|
9月前
|
C语言 Python
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
155 9
|
Java Maven
Maven国内镜像配置
Maven国内镜像配置
20077 1
二叉树刷题记(八-二叉树的最大深度-深度遍历)
二叉树刷题记(八-二叉树的最大深度-深度遍历)
|
移动开发 JavaScript 前端开发
jQuery实现多种切换效果的图片切换的五款插件
jQuery实现多种切换效果的图片切换的五款插件
136 0
|
监控 Java API
字节码增强技术之 Java Agent 入门
本文详细介绍 Java Agent 启动加载实现字节码增强关键技术的实现细节,字节码增强技术为测试人员进行性能监控提供了一种新的思路。目前众多开源监控产品已经提供了丰富的 Java 探针库,作为监控服务的提供者,进一步降低了开发成本,不过开发门槛比较高,对测试人员来说有很大的一部分的学习成本。
1096 1
字节码增强技术之 Java Agent 入门
|
存储 网络协议 Linux
nfs共享存储部署
nfs部署 ​ NFS基于TCP/IP穿件的网络文件系统,NFS服务的实现依赖于RPC(远程调用服务)机制,才能完成远程到本地的映射过程,在centos 系统中,需要安装nfs-utils、rpcbind软件包来提供nfs共享服务,NFS用于共享发布和访问,而RPC用于过程调用。
408 0
nfs共享存储部署