2013-04-06 19 views
5

Patrzę na rzutkę z punktu widzenia po stronie serwera.Czy Dart ma harmonogram?

Czy istnieje program planujący, który może wykonać izolaty o określonej godzinie lub X razy na godzinę? Myślę o liniach kwarcu w świecie Jawy.

Odpowiedz

10

Dart ma kilka opcji dla opóźnionych i powtarzających się zadań, ale nie jestem świadomy portu kwarcu do darta (jeszcze ... :)

Oto podstawy:

  • Timer - wystarczy uruchomić funkcję po pewnym opóźnieniem
  • Future - bardziej wytrzymałe, sk, funkcje zwracające wartości „w przyszłości”
  • Stream - mocna, composable strumieni zdarzeń. Może być okresowy.

Jeśli masz powtarzające się zadanie, polecam używanie funkcji Stream over Timer. Timer nie ma wbudowanej obsługi błędów, więc nieprzewidziane wyjątki mogą obniżyć cały twój program (Dart nie ma globalnej procedury obsługi błędów).

Oto jak użyć Stream produkować okresowe wyniki:

import 'dart:async'; 

main() { 
    var stream = new Stream.periodic(const Duration(hours: 1), (count) { 
    // do something every hour 
    // return the result of that something 
    }); 

    stream.listen((result) { 
    // listen for the result of the hourly task 
    }); 
} 

Ty konkretnie zapytać izolatów. Możesz odradzić izolat podczas startu programu i co godzinę wysyłać mu wiadomość. Możesz też odrodzić izolat podczas startu programu, a sam izolator może uruchomić swój własny timer lub strumień okresowy.