OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 // Dart core library. | 5 // Dart core library. |
6 | 6 |
7 | 7 |
8 /** | 8 /** |
9 * A Future is used to obtain a value sometime in the | 9 * A Future is used to obtain a value sometime in the |
10 * future. | 10 * future. |
11 * | 11 * |
12 * Receivers of a Future obtain the value by passing | 12 * Receivers of a Future obtain the value by passing |
13 * a callback to the 'then' method of Future. | 13 * a callback to the 'then' method of Future. |
14 * | 14 * |
15 * For example: | 15 * For example: |
16 * | 16 * |
17 * Future<int> future = getFutureFromSomewhere(); | 17 * Future<int> future = getFutureFromSomewhere(); |
18 * future.then((value) { | 18 * future.then((value) { |
19 * print("I received the number " + value); | 19 * print("I received the number " + value); |
20 * }); | 20 * }); |
21 * | 21 * |
22 */ | 22 */ |
23 interface Future<T> factory FutureImpl<T> { | 23 interface Future<T> default FutureImpl<T> { |
24 | 24 |
25 /** | 25 /** |
26 * The value this future provided. (If called when hasValue | 26 * The value this future provided. (If called when hasValue |
27 * is false, then throws an exception.) | 27 * is false, then throws an exception.) |
28 */ | 28 */ |
29 T get value(); | 29 T get value(); |
30 | 30 |
31 /** | 31 /** |
32 * Exception that occurred (null if no exception occured). (If called | 32 * Exception that occurred (null if no exception occured). (If called |
33 * before [isComplete] is true, then this exception property itself | 33 * before [isComplete] is true, then this exception property itself |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 * // send [future] object back to client... | 87 * // send [future] object back to client... |
88 * | 88 * |
89 * // later when value is available, call: | 89 * // later when value is available, call: |
90 * completer.complete(value); | 90 * completer.complete(value); |
91 * | 91 * |
92 * // alternatively, if the service cannot produce the value, it | 92 * // alternatively, if the service cannot produce the value, it |
93 * // can provide an exception: | 93 * // can provide an exception: |
94 * completer.completeException(exception); | 94 * completer.completeException(exception); |
95 * | 95 * |
96 */ | 96 */ |
97 interface Completer<T> factory CompleterImpl<T> { | 97 interface Completer<T> default CompleterImpl<T> { |
98 | 98 |
99 /** Create a completer */ | 99 /** Create a completer */ |
100 Completer(); | 100 Completer(); |
101 | 101 |
102 Future get future(); | 102 Future get future(); |
103 | 103 |
104 /** | 104 /** |
105 * Called when value is available. | 105 * Called when value is available. |
106 */ | 106 */ |
107 void complete(T value); | 107 void complete(T value); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 values[pos] = value; | 139 values[pos] = value; |
140 if (--remaining == 0) { | 140 if (--remaining == 0) { |
141 completer.complete(values); | 141 completer.complete(values); |
142 } | 142 } |
143 }); | 143 }); |
144 } | 144 } |
145 return completer.future; | 145 return completer.future; |
146 } | 146 } |
147 } | 147 } |
148 | 148 |
OLD | NEW |