【发布时间】:2014-11-12 01:38:20
【问题描述】:
有没有更好的方法来迭代生成器的结果,我的 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)) ;
}
}
【问题讨论】:
标签: javascript node.js generator ecmascript-6