Effect<Value>.asyncPeriodic constructor

Effect<Value>.asyncPeriodic(
  1. Duration interval,
  2. Future<Value> computation(
    1. int computationCount
    ), {
  3. Value onDone()?,
  4. Value onError(
    1. Object error,
    2. StackTrace stackTrace
    )?,
  5. bool? cancelOnError,
})

Asynchronous counterpart to Effect.periodic. The computation can perform suspending work before yielding each value.

Example:

final asyncTicker = Effect.asyncPeriodic(
  const Duration(seconds: 1),
  (count) async => await loadFrame(count),
);

Implementation

factory Effect.asyncPeriodic(
  Duration interval,
  Future<Value> Function(int computationCount) computation, {
  Value Function()? onDone,
  Value Function(Object error, StackTrace stackTrace)? onError,
  bool? cancelOnError,
}) =>
    Effect.stream(
      stream: Stream.periodic(interval, computation).asyncMap((e) async => await e),
      onDone: onDone,
      onError: onError,
      cancelOnError: cancelOnError,
    );