Ce face Timer.run
Timer.run(f) este echivalent cu Timer(Duration.zero, f): funcția rulează în coada de evenimente, imediat ce codul sincron curent și toate microtask-urile s-au terminat.
Este util când vrei să lași programul să termine ce face acum (de exemplu să actualizeze o stare) înainte de pasul următor.
Parametri
| Parametru | Descriere |
|---|---|
callback |
Funcția rulată. |
Ce returnează
Nimic (void).
Exemple
Exemplul 1: După microtask-uri, ca eveniment
import 'dart:async';
Future<void> main() async {
Timer.run(() => print('3. Timer.run'));
scheduleMicrotask(() => print('2. microtask'));
print('1. cod sincron');
await Future.delayed(const Duration(milliseconds: 10));
}
Rezultat
1. cod sincron
2. microtask
3. Timer.run
Exemplul 2: Ordinea mai multor Timer.run
import 'dart:async';
Future<void> main() async {
for (final oras in ['Iași', 'Cluj', 'Brașov']) {
Timer.run(() => print('procesez $oras'));
}
print('am programat toate orașele');
await Future.delayed(const Duration(milliseconds: 10));
}
Rezultat
am programat toate orașele
procesez Iași
procesez Cluj
procesez Brașov
Greșeli frecvente
- Te aștepți ca
Timer.runsă ruleze înaintea unui microtask programat după el. Microtask-urile au întâietate.
Comenzi înrudite
Timer: Rulează o funcție o dată, după o durată dată; cancel îl oprește înainte, isActive spune dacă mai așteaptă.scheduleMicrotask: Programează o funcție să ruleze imediat după codul sincron curent, înaintea timerelor și a altor evenimente.Future: O valoare care va fi gata mai târziu (citirea unui fișier, un răspuns de la server); o aștepți cu await.