是否可以将 ECMAScript 6 生成器重置为其初始状态?

2024-06-20

给定提供的(非常简单)生成器,是否可以将生成器返回到其原始状态以再次使用?

var generator = function*() {
    yield 1;
    yield 2;
    yield 3;
};

var iterable = generator();

for (let x of iterable) {
    console.log(x);
}

// At this point, iterable is consumed.
// Is there a method for moving iterable back
// to the start point by only without re-calling generator(),
// (or possibly by re-calling generator(), only by using prototype 
//  or constructor methods available within the iterable object)
// so the following code would work again?

for (let x of iterable) {
    console.log(x);
}

我希望能够将可迭代对象传递到其他范围,迭代它,做一些其他事情,然后能够稍后在同一范围内再次迭代它。


如果你的意图是

到其他范围,迭代它,做一些其他的事情,然后能够稍后在同一范围内再次迭代它。

那么你唯一不应该尝试做的就是传递迭代器,而不是传递生成器:

var generator = function*() {
    yield 1;
    yield 2;
    yield 3;
};

var user = function(generator){

    for (let x of generator()) {
        console.log(x);
    }

    for (let x of generator()) {
        console.log(x);
    }
}

或者只是创建一个“循环”迭代器并在迭代时进行检查

var generator = function*() {
    while(true){
        yield 1;
        yield 2;
        yield 3;
    }
};

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

是否可以将 ECMAScript 6 生成器重置为其初始状态? 的相关文章

随机推荐

  • 安装 python 3 的包

    我倾向于在 Jupyter 笔记本中运行我的代码 这些代码在 python 3 中运行 我的计算机上也有 python 2 我安装了pip3所以我可以专门为 python 3 安装软件包 但这似乎不适合我 mba pip3 install
  • Javascript 中“options = options || {}”是什么意思? [复制]

    这个问题在这里已经有答案了 前几天我看到了一段令我感到好奇的代码片段 但我不太确定它实际上是做什么的 options options 到目前为止我的想法 设置变量options重视options如果存在 如果不存在 则设置为空对象 Yes
  • angular2 rc5 路由器服务单例

    我最近迁移到 Angular 2 RC 5 并将应用程序中的子模块转换为 NgModule 鉴于以下情况plunker https angular io resources live examples router ts plnkr htm
  • F# 如何标记用户输入:分隔数字、单位、单词?

    我对 F 相当陌生 但最近几周一直在阅读参考资料 我希望处理用户提供的输入字符串 识别并分隔组成元素 例如 对于此输入 XYZ 酒店 6 晚 220 欧元 晚 加17 5 的税 输出应该类似于元组列表 XYZ 字 酒店 字 6 数字 夜晚
  • 检查 WebRTC 连接 - 可靠的方法

    我有一个实时视频聊天应用程序 并且使用支持 STUN TURN 和 UPD TCP 传输的 TURN 服务器 有时用户可以连接到网络blocksWebRTC 连接的端口和协议就这么多不可能发生 通常这些是公司网络 我想在用户尝试相互连接之前
  • 如何按 data.table 中的十分位数组计算统计数据

    我有一个 data table 想按组计算统计数据 R set seed 1 R DT data table a rnorm 100 b rnorm 100 这些组应该定义为 R quantile DT a probs seq 1 9 1
  • FPDI/FPDF:水印和打印多页

    我修改了这个堆栈问题 当用户尝试下载文件时在 pdf 文件上应用水印 https stackoverflow com questions 3983432 applying watermarks on pdf files when users
  • 加载pickle时出错

    无法加载 pickle 文件 我正在使用 python 3 5 import pickle data pickle load open D ud120 projects final project final project dataset
  • locationOfTouch 和 numberOfTouches

    你好 我有这个识别器 设置为 2 次触摸 但它只返回一个 而不是两个 CGPoint void gestureLoad UIGestureRecognizer recognizer recognizer UITapGestureRecogn
  • 将自定义数据包含到 iOS 故障转储中

    你好 堆栈溢出 有一个简单的问题要问您 当我的应用程序在用户的设备上崩溃时 是否可以将自定义错误数据嵌入到自动生成的 iOS 故障转储中 例如 我的 SQlite 数据库由于某种原因无法运行 例如 数据库文件已损坏 我无法从这个错误中恢复
  • while循环的时间复杂度是多少?

    我正在尝试找出 while 循环的时间复杂度 但我不知道从哪里开始 我了解如何找到 for 循环的复杂性类别 但是当涉及到 while 循环时 我完全迷失了 关于从哪里开始有什么建议 提示吗 这是一个问题的示例 x 0 A n some a
  • 如何从谷歌表格下载 PNG 图表

    我试图在 Google Sheet 中创建一个自定义菜单 以允许我将当前 Google Sheet 文件中所有工作表中的所有图表下载到 PNG 图像中 使用图表标题作为图像名称 保存到我的 Windows PC 的默认下载目录中 我打算使用
  • sbt 项目构建中的多个目标目录

    我有一个这样结构的 sbt 项目 build sbt project build properties plugins sbt src main java smcho App java test java smcho AppTest jav
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • flash 10 正交投影

    我一直在尝试新的 flash 10 3d 可能性 发现在 3d 中旋转精灵相当容易 var card Sprite new MyCard card x 100 card y 100 card z 200 card rotationX 60
  • 如何使用正则表达式验证带有可选百分比符号的小数?

    正如问题的标题 我需要使用以下值验证正则表达式 最多 2 个小数位和 9 个整数 带有可选的百分比符号 Valid 10 0 1111111 12 15 2 10 2 3 Invalid 12 02 123456789123 123 I t
  • readLine() 只读取控制台中的第二个输入

    我刚刚开始使用 Kotlin 所以如果这是一个愚蠢的问题 我认为这可能是 我深表歉意 我正在跟进this https kotlinlang org docs tutorials jvm get started html指南 但遇到了一个问题
  • 仅头文件库的优点

    仅头文件库有哪些好处 为什么要以这种方式编写它而不是将实现放入单独的文件中 仅标头库的优点 简化构建过程 您不需要构建库 也不需要在构建的链接步骤中指定编译的库 如果您确实有一个已编译的库 您可能想要构建它的多个版本 一个在启用调试的情况下
  • 在 NDB 和 GAE 中的 put() 之后评估条件

    在将实体放入数据存储区后 我需要使用 NDB 执行一些代码 假设我有这样的东西 ent Entity ent put def after put assert 如何在不手动调用该函数的情况下实现这一目标 我可以使用某种触发器或回调吗 是的
  • 是否可以将 ECMAScript 6 生成器重置为其初始状态?

    给定提供的 非常简单 生成器 是否可以将生成器返回到其原始状态以再次使用 var generator function yield 1 yield 2 yield 3 var iterable generator for let x of