JavaScript Academy · Lektion

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.

Lektion 2 av 38 steg

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)
Generatorfunktioner, yield och små pipelines — illustration 1

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);
}
Generatorfunktioner, yield och små pipelines — illustration 2

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 }
Generatorfunktioner, yield och små pipelines — illustration 3

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)]);
Generatorfunktioner, yield och små pipelines — illustration 4

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]);
Generatorfunktioner, yield och små pipelines — illustration 5

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.
Generatorfunktioner, yield och små pipelines — illustration 6

Quiz om generatorfunktionens returvärde

Snabb kontroll: Vad returnerar en generatorfunktion?

Generatorfunktioner, yield och små pipelines — illustration 7

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.

Generatorfunktioner, yield och små pipelines — illustration 8
Gratis att börja

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

  1. Iterable-protokollet och for...of
  2. Generatorfunktioner, yield och små pipelines
  3. Asynkrona iteratorer — for await...of och async-generatorer
← Tillbaka till JavaScript Academy