| Index: quiver/lib/src/async/iteration.dart
|
| diff --git a/quiver/lib/src/async/iteration.dart b/quiver/lib/src/async/iteration.dart
|
| deleted file mode 100644
|
| index 4132573ac9bfa9583f8eee2bdcdf1186072d82f4..0000000000000000000000000000000000000000
|
| --- a/quiver/lib/src/async/iteration.dart
|
| +++ /dev/null
|
| @@ -1,107 +0,0 @@
|
| -// Copyright 2013 Google Inc. All Rights Reserved.
|
| -//
|
| -// Licensed under the Apache License, Version 2.0 (the "License");
|
| -// you may not use this file except in compliance with the License.
|
| -// You may obtain a copy of the License at
|
| -//
|
| -// http://www.apache.org/licenses/LICENSE-2.0
|
| -//
|
| -// Unless required by applicable law or agreed to in writing, software
|
| -// distributed under the License is distributed on an "AS IS" BASIS,
|
| -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| -// See the License for the specific language governing permissions and
|
| -// limitations under the License.
|
| -
|
| -part of quiver.async;
|
| -
|
| -/**
|
| - * An asynchronous callback that returns a value.
|
| - */
|
| -typedef Future<T> AsyncAction<T>(e);
|
| -
|
| -/**
|
| - * An asynchronous funcuntion that combines an element [e] with a previous value
|
| - * [previous], for use with [reduceAsync].
|
| - */
|
| -typedef Future<T> AsyncCombiner<T>(T previous, e);
|
| -
|
| -/**
|
| - * Calls [action] for each item in [iterable] in turn, waiting for the Future
|
| - * returned by action to complete.
|
| - *
|
| - * If the Future completes to [true], iteration continues.
|
| - *
|
| - * The Future returned completes to [true] if the entire iterable was processed,
|
| - * otherwise [false].
|
| - */
|
| -Future doWhileAsync(Iterable iterable, AsyncAction<bool> action) =>
|
| - _doWhileAsync(iterable.iterator, action);
|
| -
|
| -Future _doWhileAsync(
|
| - Iterator iterator, AsyncAction<bool> action) => (iterator.moveNext())
|
| - ? action(iterator.current).then((bool result) =>
|
| - (result) ? _doWhileAsync(iterator, action) : new Future.value(false))
|
| - : new Future.value(true);
|
| -
|
| -/**
|
| - * Reduces a collection to a single value by iteratively combining elements
|
| - * of the collection using the provided [combine] function. Similar to
|
| - * [Iterable.reduce], except that [combine] is an async function that returns a
|
| - * [Future].
|
| - */
|
| -Future reduceAsync(Iterable iterable, initialValue, AsyncCombiner combine) =>
|
| - _reduceAsync(iterable.iterator, initialValue, combine);
|
| -
|
| -Future _reduceAsync(Iterator iterator, currentValue, AsyncCombiner combine) {
|
| - if (iterator.moveNext()) {
|
| - return combine(currentValue, iterator.current)
|
| - .then((result) => _reduceAsync(iterator, result, combine));
|
| - }
|
| - return new Future.value(currentValue);
|
| -}
|
| -
|
| -/**
|
| - * Schedules calls to [action] for each element in [iterable]. No more than
|
| - * [maxTasks] calls to [action] will be pending at once.
|
| - */
|
| -Future forEachAsync(Iterable iterable, AsyncAction action, {int maxTasks: 1}) {
|
| - if (maxTasks == null || maxTasks < 1) {
|
| - throw new ArgumentError("maxTasks must be greater than 0, was: $maxTasks");
|
| - }
|
| -
|
| - if (iterable == null) {
|
| - throw new ArgumentError("iterable must not be null");
|
| - }
|
| -
|
| - if (iterable.isEmpty) return new Future.value();
|
| -
|
| - var completer = new Completer();
|
| - var iterator = iterable.iterator;
|
| - int pending = 0;
|
| - bool failed = false;
|
| -
|
| - bool scheduleTask() {
|
| - if (pending < maxTasks && iterator.moveNext()) {
|
| - pending++;
|
| - var item = iterator.current;
|
| - scheduleMicrotask(() {
|
| - var task = action(item);
|
| - task.then((_) {
|
| - pending--;
|
| - if (failed) return;
|
| - if (!scheduleTask() && pending == 0) {
|
| - completer.complete();
|
| - }
|
| - }).catchError((e) {
|
| - if (failed) return;
|
| - failed = true;
|
| - completer.completeError(e);
|
| - });
|
| - });
|
| - return true;
|
| - }
|
| - return false;
|
| - }
|
| - while (scheduleTask()) {}
|
| - return completer.future;
|
| -}
|
|
|