limited<T> method

ZenWorkerHandle limited<T>(
  1. ValueNotifier<T> obs,
  2. void callback(
    1. T
    ),
  3. int maxExecutions
)

Worker that executes a limited number of times

Implementation

ZenWorkerHandle limited<T>(
  ValueNotifier<T> obs,
  void Function(T) callback,
  int maxExecutions,
) {
  if (maxExecutions <= 0) {
    throw ArgumentError('maxExecutions must be positive');
  }
  int count = 0;
  late ZenWorkerHandle handle;
  handle = ever<T>(obs, (value) {
    if (count < maxExecutions) {
      try {
        callback(value);
        count++;
        if (count >= maxExecutions) {
          handle.dispose();
        }
      } catch (e, stack) {
        ZenLogger.logError('Error in limited worker', e, stack);
        handle.dispose();
      }
    }
  });
  return handle;
}