floitsch@google.com
2013-02-15 13:57:18 +00:00
parent ad839e6957
commit 0672317bec
26 changed files with 9 additions and 352 deletions
+2 -2
View File
@@ -274,13 +274,13 @@ Stream wrapStream(Stream stream) {
/// Like [Iterable.where], but allows [test] to return [Future]s and uses the
/// results of those [Future]s as the test.
Future<Iterable> futureWhere(Iterable iter, test(value)) {
return Future.wait(iter.mappedBy((e) {
return Future.wait(iter.map((e) {
var result = test(e);
if (result is! Future) result = new Future.immediate(result);
return result.then((result) => new Pair(e, result));
}))
.then((pairs) => pairs.where((pair) => pair.last))
.then((pairs) => pairs.mappedBy((pair) => pair.first));
.then((pairs) => pairs.map((pair) => pair.first));
}
// TODO(nweiz): unify the following functions with the utility functions in