Ich erkannte, dass in der aktuellen Dart SDK Version 0.4.1.0_r19425 Methoden wie setTimeout
, setInterval
, clearTimeout
, clearInterval
sind nicht Teil der Window
Klasse mehr und sie alle bewegt WorkerContext
verwenden .
Gibt es Dokumentation, wie man sie jetzt benutzt? Muss ich jedes Mal eine neue Instanz von WorkerContext
erstellen, wenn ich sie verwenden möchte?Wie setInterval/SetTimeout in Dart SDK 0.4+
Antwort
Neben Timer von Chris erwähnt, gibt es eine Future-based API:
var future = new Future.delayed(const Duration(milliseconds: 10), doStuffCallback);
Es ist noch nicht die direkte Unterstützung für eine Zukunft Rückruf Cancelling, aber das funktioniert ziemlich gut:
var future = new Future.delayed(const Duration(milliseconds: 10));
var subscription = future.asStream().listen(doStuffCallback);
// ...
subscription.cancel();
Hoffentlich gibt es bald auch eine Stream version of Timer.repeating.
Von diesem post on the group (14. Februar 2013).
// Old Version
window.setTimeout(() { doStuff(); }, 0);
// New Version
import 'dart:async';
Timer.run(doStuffCallback);
Und ein weiteres Beispiel (aus dem gleichen Post kopiert)
// Old version:
var id = window.setTimeout(doStuffCallback, 10);
.... some time later....
window.clearTimeout(id);
id = window.setInterval(doStuffCallback, 1000);
window.clearInterval(id);
// New version:
var timer = new Timer(const Duration(milliseconds: 10), doStuffCallback);
... some time later ---
timer.cancel();
timer = new Timer.repeating(const Duration(seconds: 1), doStuffCallback);
timer.cancel();
Insbesondere sind sie nun Teil der Timer
Klasse in der dart:async
Bibliothek (statt WorkerContext
, die IndexedDB spezifisch zu sein scheint) . API docs here
Ich warne vor der Verwendung von Timer, es sei denn, Sie setzen try/catch in Timer. Wenn eine Ausnahme innerhalb des Timers ausgelöst wird und Sie sie nicht abfangen, wird das Spiel beendet und die App wird beendet. Sie möchten wahrscheinlich Future.delayed verwenden, das nicht nur Ausnahmen korrekt abfängt, sondern Ihnen auch einen Überblick gibt, wann es tatsächlich fertig ist. Futures komponieren auch besser. –
- 1. Gibt es im dart SDK eine Ereignisdelegierung?
- 2. Wie angular2_material -Dart und angular2-Dart
- 3. Wie importiere ich dart: html & dart: io in derselben Klasse?
- 4. Curl wie Funktionalität in Dart
- 5. Android Studio 0.4. + Benutzerdefinierter Debug-Schlüsselspeicher
- 6. Wo ist `dart: uri` jetzt?
- 7. Klassenart in Dart einschalten
- 8. Dart verwirrend TYPE Fehler
- 9. Embedding Dart in Anwendung
- 10. Client-Server in Dart
- 11. Globale Variablen in Dart
- 12. Dart-Pub-Update fehlgeschlagen
- 13. Code-Aufspaltung in Dart
- 14. Urlcode in Dart
- 15. Funktioniert window.navigator.getGamepads() in Dart?
- 16. Wie lade ich ein Bild in Dart
- 17. Wie emuliert ich geschützte Methoden in Dart?
- 18. Wie lese ich Konsoleneingabe/-Stdin in Dart?
- 19. Wie lautet die Paketnamenskonvention in Dart?
- 20. Wie bekomme ich einen Zeitstempel in Dart?
- 21. Wie erzeuge ich Zufallszahlen in Dart?
- 22. Wie HTML-Entitäten in Dart hinzufügen?
- 23. Wie kombinierst du Ausnahmen in Dart?
- 24. Wie verwenden Sie OAuth2 in Dart 1.0?
- 25. Wie lautet das Schlüsselwort "const" in Dart?
- 26. Wie erweitere ich eine Liste in Dart?
- 27. Wie drucken Sie ein Dollarzeichen $ in Dart
- 28. Wie funktioniert Socket Disconnect in Dart?
- 29. Wie fügt man Zeilen zu TableElement in Dart hinzu?
- 30. Karte von Klasse in Dart
Also, wenn ich es richtig verstehe, ist die Verwendung von Future der empfohlene Weg. – martin