Como iterar sobre os resultados de uma função de gerador
Existe uma maneira melhor de iterar sobre os resultados de um gerador, meu loop for é feio:
for(let job = readyJob.next(); !job.done; job = readyJob.next()){ }
No contexto, há uma função de gerador que pode determinar se há um lote de trabalho, consistindo em 1 .. * trabalhos (o gerador também pode retornar nenhum trabalho no lote). Há um loop contínuo que instancia o gerador e itera sobre o lote, fazendo o trabalho no trabalho (registro).
Existe uma solução mais elegante para esse problema de iteração. Quero dizer, isso parece um iterador tradicional de Java / C # que não é ruim. Algo como um "cada" seria super legível ... Essa é minha esperança de qualquer maneira.
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()
};
}
}
então
while(true){
let readyJob = getReadyJob()
for(let job = readyJob.next(); !job.done; job = readyJob.next()){
console.log(JSON.stringify(job.value)) ;
}
}