深入理解ES6笔记(八)迭代器(Iterator)与生成器(Generator)

茄官
• 阅读 1593
主要知识点:迭代器、生成器、可迭代对象以及for-of循环、迭代器的高级功能以及创建异步任务处理器
深入理解ES6笔记(八)迭代器(Iterator)与生成器(Generator)

《深入理解ES6》笔记 目录

迭代器(Iterator)

迭代器是被设计专用于迭代的对象,带有特定接口。所有的迭代器对象都拥有 next() 方法,会返回一个结果对象。该结果对象有两个属性:对应下一个值的 value ,以及一个布尔类型的 done ,其值为 true 时表示没有更多值可供使用。
ES5实现迭代器的代码如下:

function createIterator(items) {
    var i = 0;
    return {
        next: function() {
            var done = (i >= items.length);
            var value = !done ? items[i++] : undefined;
            return {
                done: done,
                value: value
            };
        }
    };
}
var iterator = createIterator([1, 2, 3]);
console.log(iterator.next()); // "{ value: 1, done: false }"
console.log(iterator.next()); // "{ value: 2, done: false }"
console.log(iterator.next()); // "{ value: 3, done: false }"
console.log(iterator.next()); // "{ value: undefined, done: true }"
// 之后的所有调用
console.log(iterator.next()); // "{ value: undefined, done: true }"

生成器(Generator)

生成器( generator )是能返回一个迭代器的函数。生成器函数由放在 function 关键字之后的一个星号( * )来表示,并能使用新的 yield 关键字。

// 生成器
function *createIterator() {
    yield 1;
    yield 2;
    yield 3;
}
// 生成器能像正规函数那样被调用,但会返回一个迭代器
let iterator = createIterator();
console.log(iterator.next().value); // 1
console.log(iterator.next().value); // 2
console.log(iterator.next().value); // 3
点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Python三大神器之迭代器详解
我们将要来学习python的重要概念迭代和迭代器,通过简单实用的例子如列表迭代器和xrange。可迭代一个对象,物理或者虚拟存储的序列。list,tuple,strins,dicttionary,set以及生成器对象都是可迭代的,整型数是不可迭代的。如果你不确定哪个可迭代哪个不可以,你需要用python内建的iter()来帮忙。
Stella981 Stella981
3年前
Python —— 函数高级特性(切片、迭代、列表生成式、生成器、迭代器)
一、切片(Slice)    在很多编程语言中,针对字符串提供了很多截取函数(i.e. substring),目的就是对字符串切片。python中没有针对字符串的截取函数,需要通过“切片”来完成。  取一个list或tuple的部分元素可以用切片   格式: 假定list或tuple组成的元素组
Stella981 Stella981
3年前
Python进阶系列:Python遍历的秘密
!(https://oscimg.oschina.net/oscnet/1c11c4f048874b8d929e10ec7fcf4cfe.gif) 前言 可迭代对象,迭代器,生成器,相信许多学习Python的小伙伴或多或少都听说过,但你真的知道他们的区别吗?真的知道为什么需要这些概念吗?本文带你深入了解一系列相
Stella981 Stella981
3年前
Python3 迭代器与生成器
点击上方Z先生点记,加为星标第一时间收到Python技术干货!转自:Python那些事迭代器迭代是Python最强大的功能之一,是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器有两个基本的方
Stella981 Stella981
3年前
Php5.5新特性 Generators详解
在PHP5.5.0版本中,新增了生成器\(Generators)_特性,用于简化实现迭代器接口_(Iterator)\创建简单的迭代器的复杂性。通过生成器,我们可以轻松的使用foreach迭代一系列的数据,而不需要事先在内存中构建要被迭代的对象,大大减少了内存开销。当生成器函数被调用的时候,它会返回一个可迭代的对象,当对该对象进行迭代
Stella981 Stella981
3年前
Day11 python高级特性
直接可以作用于for循环的数据类型有以下几种:  • 集合数据类型:       list、tuple、dict、set、str  • Generator:       生成器和带yield的generatorfunction.这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。可以通
Stella981 Stella981
3年前
Python 迭代器与生成器
python迭代器与生成器说到python迭代器,首先要明确两个概念:Iterable和Iterator,这两个概念还有Generator都是定义在collections模块里的。Iterable意为“可迭代的(对象)”,包括如下两种:1、实现了__getitem__(self,
Wesley13 Wesley13
3年前
Java描述设计模式(13):迭代器模式
本文源码:GitHub·点这里(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Fcicadasmile%2Fmodelarithmeticparent)||GitEE·点这里(https://gitee.com/cicadasmile/modela
Stella981 Stella981
3年前
OpenCV访问像素点
三种方法迭代器创建一个Mat::Iterator对象it,通过itMat::begin()来的到迭代首地址,递增迭代器知道itMat::end()结束迭代;while(it!Scr.end<Vec3b()){//(it)00;//蓝色通道置零;
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
茄官
茄官
Lv1
君埋泉下泥销骨,我寄人间雪满头。
文章
1
粉丝
0
获赞
0
热门文章

暂无数据