Dart Academy · leksjon

Hendelsesløkken og microtasks

Forstå hvordan Dart planlegger asynkront arbeid.

Leksjon 1 av 413 trinn

Hendelsesløkken og microtasks er en gratis leksjon i Dart Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Dart Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Dart Academy inneholder totalt 4 leksjoner.

Én tråd, ingen venting

Dart kjører koden din i én tråd, men fryser likevel aldri. Hemmeligheten er event loop, som planlegger arbeid i stedet for å blokkere. ⚡

Slik fungerer event loop

Event loop er en enkel syklus: velg den neste ventende oppgaven, kjør den ferdig, og gjenta. Koden din kjører i ryddige, uavbrutte deler.

Synkront først

All vanlig kode som kjører ovenfra og ned, kjøres først. Først når det synkrone arbeidet er ferdig, begynner løkken å håndtere planlagte oppgaver.

To køer

Løkken henter fra to køer: mikrooppgavekøen og hendelseskøen. Mikrooppgaver går alltid foran hendelser.

Mikrooppgavekøen

En mikrooppgave er et lite stykke utsatt arbeid, for eksempel en callback for en fullført Future. Løkken tømmer alle mikrooppgaver før den tar for seg hendelseskøen.

Hendelseskøen

Hendelseskøen inneholder større oppgaver: tidtakere, filinnlesing, trykk og nettverkssvar. De venter til alle mikrooppgavene er ferdige.

Planlegge en mikrooppgave

Du kan legge arbeid i mikrooppgavekøen med scheduleMicrotask. Det kjører etter den gjeldende koden, men før enhver hendelse.

scheduleMicrotask(() => print("microtask"));
print("right now");

Planlegge en hendelse

En Timer (eller Future.delayed med null) legger en callback i hendelseskøen, slik at den kjører etter alle ventende mikrooppgaver.

Timer.run(() => print("event"));
print("right now");

Mikrooppgaver vinner

Hvis begge deler ligger i kø, kjører mikrooppgaven først. Denne rekkefølgen gjør Future-kjeder raske og forutsigbare.

scheduleMicrotask(() => print("A"));
Timer.run(() => print("B"));
// prints A then B

Derfor forblir appen responsiv

Fordi hver oppgave kjører ferdig, blir appen din aldri bare delvis oppdatert. Løkken holder alt responsivt uten at du må håndtere tråder manuelt.

Ikke sult ut løkken

Hvis du fyller opp mikrooppgavekøen, kan hendelser blokkeres på ubestemt tid, slik at inndata fryser. Hold mikrooppgavene korte, og la hendelsene slippe til.

Rask sjekk

Rask sjekk av rekkefølgen i køene.

Oppsummering: Event loop

Du har lært at event loop kjører synkron kode først, deretter tømmer mikrooppgavene og til slutt hendelsene. Denne rekkefølgen holder Dart en-trådet, men responsivt. 🎉

Gratis å komme i gang

Lær deg Dart med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
30
Leksjoner
120

Ofte stilte spørsmål

Er leksjonen «Hendelsesløkken og microtasks» gratis?

Ja – hele teksten i «Hendelsesløkken og microtasks» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Dart Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Dart Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Hendelsesløkken og microtasks»?

Forstå hvordan Dart planlegger asynkront arbeid. Du øver på Dart Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Dart Academy?

Ingen tidligere erfaring er nødvendig. Dart Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Hendelsesløkken og microtasks»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Dart Academy-leksjonen?

Ja. Alle Dart Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Hendelsesløkken og microtasks
  2. Opprett og avvent Futures
  3. Feilhåndtering i async-kode
  4. Future.wait og parallelt arbeid
← Tilbake til Dart Academy