Reduces a sequence of values by repeatedly applying combine
.
Source
Future<T> reduce(T combine(T previous, T element)) { _Future<T> result = new _Future<T>(); bool seenFirst = false; T value; StreamSubscription subscription; subscription = this.listen( (T element) { if (seenFirst) { _runUserCode(() => combine(value, element), (T newValue) { value = newValue; }, _cancelAndErrorClosure(subscription, result)); } else { value = element; seenFirst = true; } }, onError: result._completeError, onDone: () { if (!seenFirst) { try { throw IterableElementError.noElement(); } catch (e, s) { _completeWithErrorCallback(result, e, s); } } else { result._complete(value); } }, cancelOnError: true ); return result; }