2013-04-06 28 views
5

我正在從服務器端角度看dart。Dart是否有調度程序?

是否有可以在特定時間執行分離的計劃程序,或每小時執行X次?我正在思考Java世界中的Quartz行。

回答

10

飛鏢有延遲,重複任務的幾個選項,但我不知道石英的端口鏢(但... :)

這裏有最基礎的:

  • Timer - 只是一些延遲後運行一個函數
  • Future - 更強大的,可組合,即「未來」
  • Stream返回值的函數 - 事件的穩健,組合的流。可以是週期性的。

如果你有一個重複的任務,我會建議使用Stream over Timer。 Timer沒有內置的錯誤處理,因此未捕獲的異常可能會導致整個程序(Dart沒有全局錯誤處理程序)。

這裏是你如何使用Stream產生週期性的結果:

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 
    }); 
} 

你問具體菌株。您可以在程序啓動時產生一個隔離,並且每小時發送一條消息。或者,您可以在程序啓動時產生隔離,隔離本身可以運行自己的計時器或定期流。

相關問題