Generatorfunktioner, yield og små pipelines
Skriv generatorfunktioner med function*, brug yield til at producere værdier dovent, driv dem med for...of eller next(), og sammensæt små pipelines.
Generatorfunktioner, yield og små pipelines er en gratis JavaScript Academy-lektion på CoddyKit. Dette er lektion 2 af 3. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i JavaScript Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. JavaScript Academy-kurset indeholder 3 lektioner i alt.
Hvorfor generatorer?
Mål: Producer værdier efter behov med generatorer.
- function* definerer en generator
- yield producerer værdier trin for trin
- Brug for...of eller next() til at hente værdier
- Sammensæt små procesforløb (map-lignende)

function* og yield
Generatorer bruger function* og yield. Iterationen genoptages fra det seneste 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);
}

Manuel next()
next() går trinvist gennem yield-værdierne og returnerer til sidst done: true, når den er færdig.
// 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 }

Ladning af lige tal efter behov
Generatorer er gode til enkle datastrømme som lige tal, uden at du først skal opbygge store arrays.
// 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)]);

Doven map-kæde
Sammensæt små trin: giv én generator som input til en anden for at opbygge dovne behandlingskæder.
// 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]);

Gode vaner
Tip:
- Kald generatorfunktionen for at få en iterator (den kører ikke helt på forhånd).
- yield sætter på pause; return afslutter sekvensen.
- Når den er færdig, er en generator udtømt; kald funktionen igen for at få en ny iterator.

Quiz om generatorens returværdi
Hurtigt tjek: Hvad returnerer en generatorfunktion?

Opsummering
Opsummering: Definér function*, lever værdier efter behov, forbrug dem med for...of eller next(), og sammensæt små generatorbaserede behandlingskæder til enkle transformationer.

Lær JavaScript med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 59
- Lektioner
- 200
Ofte stillede spørgsmål
Er lektionen “Generatorfunktioner, yield og små pipelines” gratis?
Ja — alle 3 lektioner i læringssporet JavaScript Academy, inklusive “Generatorfunktioner, yield og små pipelines”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. JavaScript Academy-kurset indeholder 3 lektioner i alt.
Hvad lærer jeg i “Generatorfunktioner, yield og små pipelines”?
Skriv generatorfunktioner med function*, brug yield til at producere værdier dovent, driv dem med for...of eller next(), og sammensæt små pipelines. Du øver dig i JavaScript Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på JavaScript Academy?
Der kræves ingen tidligere erfaring. JavaScript Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 3.
Hvor lang tid tager lektionen “Generatorfunktioner, yield og små pipelines”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne JavaScript Academy-lektion?
Ja. Alle JavaScript Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Iterable-protokollen og for...of
- Generatorfunktioner, yield og små pipelines
- Async-iteratorer — for await...of og async-generatorer