everAll<T> function

Worker everAll<T>(
  1. List<RxInterface<T>> observables,
  2. WorkerCallback<T> callback, {
  3. dynamic condition,
})

Similar to ever, but takes a list of observables. The condition is common to all observables.

Implementation

Worker everAll<T>(
  List<RxInterface<T>> observables,
  WorkerCallback<T> callback, {
  dynamic condition,
}) {
  final List<void Function()> listeners = [];

  for (final obs in observables) {
    void listener() {
      if (_checkCondition(condition)) {
        callback(obs.value);
      }
    }
    obs.addListener(listener);
    listeners.add(listener);
  }

  return Worker(() {
    for (var i = 0; i < observables.length; i++) {
      observables[i].removeListener(listeners[i]);
    }
  });
}