有没有更好的方法来迭代生成器的结果,我的 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/