9

我从服务器端的角度来看飞镖。

是否有可以在特定时间或每小时执行 X 次的调度程序?我正在考虑 Java 世界中的 Quartz 线路。

4

1 回答 1

12

Dart 有一些延迟和重复任务的选项,但我不知道 Quartz 到 Dart 的端口(还...... :)

以下是基础知识:

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

您特别询问隔离物。您可以在程序启动时生成一个隔离,并每小时向它发送一条消息。或者,您可以在程序启动时生成隔离,隔离本身可以运行自己的计时器或周期性流。

于 2013-04-06T18:19:58.897 回答