Does Dart have a scheduler?
dart, scheduler
Solution
Dart has a few options for delayed and repeating tasks, but I'm not aware of a port of Quartz to Dart (yet... :)
Here are the basics:
- `Timer` - simply run a function after some delay
- `Future` - more robust, composable, functions that return values "in the future"
- `Stream` - robust, composable streams of events. Can be periodic.
If you have a repeating task, I would recommend using Stream over Timer. Timer does not have error handling builtin, so uncaught exceptions can bring down your whole program (Dart does not have a global error handler).
Here's how you use a Stream to produce periodic results:
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
});
}
You specifically ask about isolates. You could spawn an isolate at program start, and send it a message every hour. Or, you can spawn the isolate at program start, and the isolate itself can run its own timer or periodic stream.
Problem
I am looking at dart from server side point of view. Is there a scheduler that can execute isolates at a specific time or X times an hour? I am thinking on the lines of Quartz in the Java world.