JavaScript · Intermediário · Inglês · Técnico
generator
Função declarada com function* que pode pausar com yield e ser retomada depois, devolvendo valores um a um. Chamá-la cria um iterador sem executar o corpo.
Onde usar
Usado em sequências preguiçosas e infinitas, paginação e máquinas de estado. Em code review, aparece também em bibliotecas antigas de fluxo assíncrono, hoje substituídas por async await.
Em código
function* contar() {
let n = 0;
while (true) yield n++;
}
const it = contar();
console.log(it.next().value); // 0
console.log(it.next().value); // 1Exemplos
I used a generator to produce an infinite sequence lazily.
Usei um generator para produzir uma sequência infinita de forma preguiçosa.
Calling the generator doesn't run anything until next.
Chamar o generator não executa nada até o next.
Cuidado
Achar que chamar o generator executa o código: ele só roda a cada next().
Sinônimos
função geradora