mi sono reso conto che nella versione attuale Dart SDK 0.4.1.0_r19425 metodi come setTimeout
, setInterval
, clearTimeout
, clearInterval
non fanno parte del Window
classe più e tutti hanno spostato in WorkerContext
.
C'è qualche documentazione su come usarli ora? Devo creare una nuova istanza di WorkerContext
ogni volta che voglio usarli?Come usare setInterval/setTimeout a Dart SDK 0.4+
risposta
Oltre a Timer citato da Chris, c'è un'API Future-based:
var future = new Future.delayed(const Duration(milliseconds: 10), doStuffCallback);
non v'è il supporto ancora diretta per annullare una richiamata futuro, ma questo funziona abbastanza bene:
var future = new Future.delayed(const Duration(milliseconds: 10));
var subscription = future.asStream().listen(doStuffCallback);
// ...
subscription.cancel();
Speriamo che presto ci sarà anche un Stream version of Timer.repeating.
Da questo post on the group (14 febbraio 2013).
// Old Version
window.setTimeout(() { doStuff(); }, 0);
// New Version
import 'dart:async';
Timer.run(doStuffCallback);
E un altro esempio (copiato partire dallo stesso posto)
// 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();
In particolare, sono ormai parte della classe Timer
nella biblioteca dart:async
(piuttosto che WorkerContext
, che sembra essere IndexedDB specifico) . API docs here
Evito di usare il timer, a meno che non mettiate try/catch all'interno di Timer. Se viene lanciata un'eccezione all'interno di Timer e non la prendi, game over e app over. Probabilmente vorrai usare Future.delayed, che non solo cattura correttamente le eccezioni, ma ti dà anche una maniglia per sapere quando è effettivamente fatto. Anche i futures compongono meglio. –
- 1. Come usare AJAX a Dart con async = true
- 2. Come connettere Dart a SQLite?
- 3. Come aggiungere righe a TableElement in Dart?
- 4. Come eseguire grunt 0.4. * Senza grunt-cli
- 5. Core Plot 0.4 tutorial iOS
- 6. come usare awesomium sdk in linux
- 7. Dart
- 8. Come connettere il database mysql a Dart?
- 9. Map da Class a Dart
- 10. Cosa è successo a StringDecoder in Dart?
- 11. Gradle ADT errore 0.4: android.buildToolsVersion manca
- 12. Esporre le funzioni Dart a javascript
- 13. Accensione tipo di classe a Dart
- 14. Dart confuso TYPE error
- 15. come distribuire l'applicazione web dart con i pacchetti dart?
- 16. Posso usare una libreria di nodi in un server Dart
- 17. Come creare un'istanza dell'elemento personalizzato Dart Polymer nel codice Dart?
- 18. Come forzare Visual Studio ad usare l'architettura x64 DNX SDK
- 19. Come usare il vst sdk sul framework .net
- 20. Come profilare un'app per dart?
- 21. CORS with Dart, come faccio a farlo funzionare?
- 22. Come aggiungere HTML arbitrario a un elemento di Dart?
- 23. Come caricare un'immagine in Dart
- 24. Come "dormire" un programma Dart
- 25. Perché utilizzare Dart come sviluppatore front-end?
- 26. Come dire a DocumentDB SDK di usare camelCase durante la query linq?
- 27. Aggiornamento Dart Pub non riuscito
- 28. Come posso usare Reflection (Mirrors) per accedere ai nomi dei metodi in una classe Dart?
- 29. Dart equivalent di Array.prototype.map()?
- 30. File input e Dart
Quindi, se ho capito bene, usare Future è il modo consigliato. – martin