Funções geradoras, yield e pequenos pipelines
Escreva funções geradoras com function*, use yield para produzir valores sob demanda, conduza-as com for...of ou next() e componha pequenos pipelines
Funções geradoras, yield e pequenos pipelines é uma aula grátis de JavaScript Academy no CoddyKit. Esta é a aula 2 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de JavaScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de JavaScript Academy inclui 3 aulas no total.
Por que usar geradores?
Objetivo: produzir valores sob demanda com geradores.
- function* define um gerador
- yield produz valores passo a passo
- Use for...of ou next() para consumir
- Componha fluxos pequenos (semelhantes a map)

function* e yield
Os geradores usam function* e yield. A iteração é retomada a partir do último yield.
// A basic generator that yields 1..n lazily
function* countTo(n) {
for (let i = 1; i <= n; i = i + 1) {
yield i; // pause here and give i to the caller
}
}
for (const x of countTo(3)) {
console.log("value:", x);
}

next() manual
next() avança pelos valores produzidos por yield e, ao final, retorna done: true quando termina.
// You can also drive a generator manually with next()
const it = countTo(2);
console.log(it.next()); // { value: 1, done: false }
console.log(it.next()); // { value: 2, done: false }
console.log(it.next()); // { value: undefined, done: true }

Números pares sob demanda
Os geradores são ótimos para fluxos simples, como números pares, sem criar grandes vetores primeiro.
// Yield even numbers up to n (inclusive)
function* evensUpTo(n) {
for (let i = 0; i <= n; i = i + 1) {
if (i % 2 === 0) {
yield i;
}
}
}
console.log("evens 0..6:", [...evensUpTo(6)]);

Fluxo map sob demanda
Componha pequenas etapas: alimente um gerador com outro para criar fluxos sob demanda.
// map() as a generator: transform values lazily
function* map(iterable, fn) {
for (const v of iterable) {
yield fn(v);
}
}
const doubled = map(countTo(4), function (x) { return x * 2; });
console.log("doubled:", [...doubled]);

Boas práticas
Dicas:
- Chame a função geradora para obter um iterador (ela não é executada por completo de imediato).
- yield pausa; return encerra a sequência.
- Quando termina, um gerador fica esgotado; chame a função novamente para obter um iterador novo.

Questionário sobre o valor retornado pelo gerador
Verificação rápida: o que uma função geradora retorna?

Recapitulação
Recapitulação: defina function*, produza valores com yield sob demanda, consuma-os com for...of ou next() e componha pequenos fluxos de geradores para transformações simples.

Perguntas Frequentes
A aula “Funções geradoras, yield e pequenos pipelines” é grátis?
Sim — o texto completo de “Funções geradoras, yield e pequenos pipelines” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de JavaScript Academy, atualize para CoddyKit PRO. O curso de JavaScript Academy inclui 3 aulas no total.
O que vou aprender em “Funções geradoras, yield e pequenos pipelines”?
Escreva funções geradoras com function*, use yield para produzir valores sob demanda, conduza-as com for...of ou next() e componha pequenos pipelines Você pratica JavaScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar JavaScript Academy?
Nenhuma experiência prévia é necessária. JavaScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 3.
Quanto tempo leva a aula “Funções geradoras, yield e pequenos pipelines”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de JavaScript Academy?
Sim. Cada aula de JavaScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Protocolo iterável e for...of
- Funções geradoras, yield e pequenos pipelines
- Iteradores assíncronos — for await...of e geradores assíncronos