Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(93)

Side by Side Diff: lib/src/future_group.dart

Issue 1220963002: Add an AsyncThunk class. (Closed) Base URL: git@github.com:dart-lang/async.git@master
Patch Set: Code review changes Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library async.future_group; 5 library async.future_group;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 /// A collection of futures waits until all added [Future]s complete. 9 /// A collection of futures waits until all added [Future]s complete.
10 /// 10 ///
11 /// Futures are added to the group with [add]. Once you're finished adding 11 /// Futures are added to the group with [add]. Once you're finished adding
12 /// futures, signal that by calling [close]. Then, once all added futures have 12 /// futures, signal that by calling [close]. Then, once all added futures have
13 /// completed, [future] will complete with a list of values from the futures in 13 /// completed, [future] will complete with a list of values from the futures in
14 /// the group, in the order they were added. 14 /// the group, in the order they were added.
15 /// 15 ///
16 /// If any added future completes with an error, [future] will emit that error 16 /// If any added future completes with an error, [future] will emit that error
17 /// and the group will be closed, regardless of the state of other futures in 17 /// and the group will be closed, regardless of the state of other futures in
18 /// the group. 18 /// the group.
19 /// 19 ///
20 /// This is similar to [Future.wait] with `eagerError` set to `true`, except 20 /// This is similar to [Future.wait] with `eagerError` set to `true`, except
21 /// that a [FutureGroup] can have futures added gradually over time rather than 21 /// that a [FutureGroup] can have futures added gradually over time rather than
22 /// needing them all at once. 22 /// needing them all at once.
23 class FutureGroup<T> implements Sink<Future<T>> { 23 class FutureGroup<T> implements Sink<Future<T>> {
24 /// The number of futures that have yet to complete. 24 /// The number of futures that have yet to complete.
25 int get pending => _pending;
Lasse Reichstein Nielsen 2015/07/02 12:25:58 Unrelated change?
nweiz 2015/07/06 21:04:16 Done.
25 var _pending = 0; 26 var _pending = 0;
26 27
27 /// Whether [close] has been called. 28 /// Whether [close] has been called.
28 var _closed = false; 29 var _closed = false;
29 30
30 /// The future that fires once [close] has been called and all futures in the 31 /// The future that fires once [close] has been called and all futures in the
31 /// group have completed. 32 /// group have completed.
32 /// 33 ///
33 /// This will also complete with an error if any of the futures in the group 34 /// This will also complete with an error if any of the futures in the group
34 /// fails, regardless of whether [close] was called. 35 /// fails, regardless of whether [close] was called.
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 /// Signals to the group that the caller is done adding futures, and so 69 /// Signals to the group that the caller is done adding futures, and so
69 /// [future] should fire once all added futures have completed. 70 /// [future] should fire once all added futures have completed.
70 void close() { 71 void close() {
71 _closed = true; 72 _closed = true;
72 if (_pending != 0) return; 73 if (_pending != 0) return;
73 if (_completer.isCompleted) return; 74 if (_completer.isCompleted) return;
74 _completer.complete(_values); 75 _completer.complete(_values);
75 } 76 }
76 } 77 }
77 78
OLDNEW
« lib/src/async_thunk.dart ('K') | « lib/src/async_thunk.dart ('k') | pubspec.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698