Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does Dart have a scheduler?

Tags:

dart

scheduler

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.

like image 233
Charlie M Avatar asked Apr 06 '13 07:04

Charlie M


People also ask

What is Cron in flutter?

Cron Job in flutter are used to run function at certain time interval. For Example: Suppose you want to call function every 1 minute, hour, day or month then flutter cron job libray is very useful its also called as time based job scheduler.


1 Answers

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.

like image 153
Seth Ladd Avatar answered Oct 19 '22 21:10

Seth Ladd