Generatorfunktioner, yield och små pipelines
Skriv generatorfunktioner med function*, använd yield för att producera värden lat och driva dem med for...of eller next(); kombinera små pipelines.
Generatorfunktioner, yield och små pipelines är en gratis lektion i JavaScript Academy på CoddyKit. Detta är lektion 2 av 3. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för JavaScript Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i JavaScript Academy innehåller totalt 3 lektioner.
Varför generatorer?
Mål: Producera värden stegvis med generatorer.
- function* definierar en generator
- yield producerar värden steg för steg
- Använd for...of eller next() för att läsa värden
- Sätt ihop små pipelines (map-liknande)

function* och yield
Generatorer använder function* och yield. Iterationen fortsätter från det senaste 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);
}

Manuellt next()
next() går igenom yield-anropen och returnerar slutligen done: true när allt är klart.
// 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 }

Jämna tal på begäran
Generatorer passar utmärkt för enkla strömmar, till exempel jämna tal, utan att först behöva skapa stora arrayer.
// 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)]);

Lat map-pipeline
Sätt ihop små steg: mata en generator till en annan för att bygga lata pipelines.
// 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]);

Goda vanor
Tips:
- Anropa generatorfunktionen för att få en iterator (den körs inte helt i förväg).
- yield pausar; return avslutar sekvensen.
- När en generator är klar är den uttömd; anropa funktionen igen för att få en ny iterator.

Quiz om generatorfunktionens returvärde
Snabb kontroll: Vad returnerar en generatorfunktion?

Sammanfattning
Sammanfattning: Definiera function*, generera värden på begäran, konsumera dem med for...of eller next(), och sätt ihop små generatorpipelines för enkla transformationer.

Lär dig JavaScript med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 59
- Lektioner
- 200
Vanliga frågor
Är lektionen ”Generatorfunktioner, yield och små pipelines” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen JavaScript Academy, inklusive ”Generatorfunktioner, yield och små pipelines”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i JavaScript Academy innehåller totalt 3 lektioner.
Vad lär jag mig i ”Generatorfunktioner, yield och små pipelines”?
Skriv generatorfunktioner med function*, använd yield för att producera värden lat och driva dem med for...of eller next(); kombinera små pipelines. Ni övar på JavaScript Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig JavaScript Academy?
Du behöver inga förkunskaper. Utbildningen i JavaScript Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 3.
Hur lång tid tar lektionen ”Generatorfunktioner, yield och små pipelines”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här JavaScript Academy-lektionen?
Ja. Varje JavaScript Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Iterable-protokollet och for...of
- Generatorfunktioner, yield och små pipelines
- Asynkrona iteratorer — for await...of och async-generatorer