2013-04-06 55 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 
    }); 
} 

你问具体菌株。您可以在程序启动时产生一个隔离,并且每小时发送一条消息。或者,您可以在程序启动时产生隔离,隔离本身可以运行自己的计时器或定期流。

相关问题