javascript - 如何迭代生成器函数的结果

标签 javascript node.js generator ecmascript-6

有没有更好的方法来迭代生成器的结果,我的 for 循环很丑:

for(let job = readyJob.next(); !job.done; job = readyJob.next()){ } 

在上下文中有一个生成器函数可以确定是否有一批工作,由 1..* 作业组成(生成器也可能不返回批处理中的任何作业)。有一个连续循环实例化生成器并迭代批处理作业(日志记录)。

这个迭代问题有没有更优雅的解决方案。我的意思是这看起来像来自 Java/C# 的传统迭代器,这还不错。像“each”这样的东西会非常可读……无论如何,这是我的希望。

 let getReadyJob = function *(instance){
    let numJobs = 7 ; // getRandomInt(0, 10) ;
    for(let i = 0; i < numJobs; i++) {
        yield {
            jobId: '' + instance + '::' + i,
            jobReadyOn: (new Date()).valueOf()
        };
    }
}

然后

while(true){
    let readyJob = getReadyJob()

    for(let job = readyJob.next(); !job.done; job = readyJob.next()){
        console.log(JSON.stringify(job.value)) ;
    }
}

最佳答案

是的,如果您的环境已经支持for...of :

for (var job of readyJob) {
  // ...
}

如果没有,已经看过几次了:

var next;
while (!(next = readyJob.next()).done) {
   var job = next.value;
   // ...
}

关于javascript - 如何迭代生成器函数的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25900371/

相关文章:

node.js - 使用 git/repository 部署 meteor 应用程序?

python - 使用推导式拆分并展平字符串和 None 值的列表

javascript - 我怎么知道哪个脚本文件正在加载 Click 事件

javascript - 停止 html5 音频

php - 在不引起数据问题的情况下可视化 chop 文本

node.js - 嵌套 Jade 模板黑色

javascript - jQuery 延迟对象集中式全局错误处理程序

node.js - 如何使用node.js和react.js下载大型CSV文件

JavaScript,从多个数组中获取所有唯一的组合

ruby-on-rails - Rails 生成模型,包括验证?