vasos tutorial lenguaje google español container dart

tutorial - dart vasos



¿Cómo ejecuto una función recurrente en Dart? (4)

Me gustaría ejecutar una función una y otra vez, con un retraso en el medio. ¿Cómo puedo hacer esto con Dart?


También puede usar Future.delayed y esperar para retrasar la ejecución:

Future<Null> delay(int milliseconds) { return new Future.delayed(new Duration(milliseconds: milliseconds)); } main() async { await delay(500); print(''Delayed 500 milliseconds''); }


alternativa;

Timer interval(Duration duration, func) { Timer function() { Timer timer = new Timer(duration, function); func(timer); return timer; } return new Timer(duration, function); } int i = 0; interval(new Duration(seconds: 1), (timer) { print(i++); if (i > 5) timer.cancel(); });


https://api.dartlang.org/stable/1.24.3/dart-async/Stream/Stream.periodic.html

import ''dart:async''; StreamSubscription periodicSub; void main() { periodicSub = new Stream.periodic(const Duration(milliseconds: 500), (v) => v) .take(10) .listen((count) => print(''tick $count'')); }

o si el contador no es necesario solo

import ''dart:async''; StreamSubscription periodicSub; void main() { periodicSub = new Stream.periodic(const Duration(milliseconds: 500)) .take(10) .listen((_) => print(''tick'')); }


Puede usar la clase Timer para programar funciones de un disparo y de repetición.

Repitiendo

Aquí es cómo ejecuta una función de repetición:

import ''dart:async''; main() { const oneSec = const Duration(seconds:1); new Timer.periodic(oneSec, (Timer t) => print(''hi!'')); }

El temporizador toma dos argumentos, una duración y una función para ejecutar. La duración debe ser una instancia de Duration . La devolución de llamada debe tomar un solo parámetro, el propio temporizador.

Cancelando un temporizador de repetición

Use timer.cancel() para cancelar un temporizador de repetición. Esta es una de las razones por las que el temporizador pasa a la ejecución de devolución de llamada desde un temporizador de repetición.

One-shot después de un retraso

Para programar una función de un disparo después de un retraso (ejecutar una vez, algún tiempo en el futuro):

import ''dart:async''; main() { const twentyMillis = const Duration(milliseconds:20); new Timer(twentyMillis, () => print(''hi!'')); }

Observe que la devolución de llamada para un temporizador de un disparo no toma un parámetro.

One-shot tan pronto como sea posible

También puede solicitar que una función se ejecute lo antes posible, al menos una marca de bucle de evento en el futuro.

import ''dart:async''; main() { Timer.run(() => print(''hi!'')); }

En HTML

Los temporizadores incluso funcionan en HTML. De hecho, window.setTimeout se eliminó, por lo que Timer es la única forma de ejecutar una función en el futuro.