Funzioni generatrici, yield e piccole pipeline
Scrivi funzioni generatrici con function*, usi yield per produrre valori in modo lazy, le controlli con for...of o next() e componi piccole pipeline.
Funzioni generatrici, yield e piccole pipeline è una lezione JavaScript Academy gratuita su CoddyKit. Questa è la lezione 2 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento JavaScript Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso JavaScript Academy include 3 lezioni in totale.
Perché i generator?
Obiettivo: produca valori in modo lazy con i generator.
- function* definisce un generator
- yield produce valori passo dopo passo
- Usi for...of o next() per consumare i valori
- Componga piccole pipeline simili a map

function* e yield
I generatori usano function* e yield. L'iterazione riprende dall'ultimo 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() manuale
next() avanza tra gli yield e infine restituisce done: true al termine.
// 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 }

Numeri pari in modo lazy
I generatori sono ideali per semplici flussi, come quello dei numeri pari, senza dover prima creare grandi array.
// 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)]);

Pipeline lazy con map
Componete piccoli passaggi: alimentate un generatore con un altro per creare pipeline lazy.
// 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]);

Buone pratiche
Suggerimenti:
- Chiamate la funzione generatore per ottenere un iteratore (non viene eseguita tutta in anticipo).
- yield mette in pausa; return termina la sequenza.
- Al termine, un generatore è esaurito; chiamate nuovamente la funzione per ottenere un iteratore nuovo.

Quiz sul valore restituito da un generatore
Controllo rapido: che cosa restituisce una funzione generatore?

Riepilogo
Riepilogo: definite function*, producete valori in modo lazy, consumateli con for...of o next() e componete piccole pipeline di generatori per semplici trasformazioni.

Domande Frequenti
La lezione «Funzioni generatrici, yield e piccole pipeline» è gratuita?
Sì — il testo completo di «Funzioni generatrici, yield e piccole pipeline» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso JavaScript Academy, passa a CoddyKit PRO. Il corso JavaScript Academy include 3 lezioni in totale.
Cosa imparerò in «Funzioni generatrici, yield e piccole pipeline»?
Scrivi funzioni generatrici con function*, usi yield per produrre valori in modo lazy, le controlli con for...of o next() e componi piccole pipeline. Eserciti JavaScript Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare JavaScript Academy?
Non è richiesta alcuna esperienza precedente. JavaScript Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 3.
Quanto tempo richiede la lezione «Funzioni generatrici, yield e piccole pipeline»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione JavaScript Academy?
Sì. Ogni lezione JavaScript Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Protocollo iterable e for...of
- Funzioni generatrici, yield e piccole pipeline
- Iteratori asincroni — for await...of e generatori async