Index: sdk/lib/async/future.dart |
diff --git a/sdk/lib/async/future.dart b/sdk/lib/async/future.dart |
index efa4144186a14e2a2a9536ac506e2ee5494365f0..820ba0087d17181fbc5b5d92e6bfdad8b51a4906 100644 |
--- a/sdk/lib/async/future.dart |
+++ b/sdk/lib/async/future.dart |
@@ -137,19 +137,29 @@ abstract class Future<T> { |
/** |
* Creates a future that completes after a delay. |
* |
- * The future will be completed after [milliseconds] have passed with |
- * the result of calling [value]. If [milliseconds] is 0, it completes at the |
- * earliest in the next event-loop iteration. |
+ * The future will be completed after the given [duration] has passed with |
+ * the result of calling [computation]. If the duration is 0 or less, it |
+ * completes no sooner than in the next event-loop iteration. |
* |
- * If calling [value] throws, the created future will complete with the |
+ * If [computation] is not given or [:null:] then it will behave as if |
+ * [computation] was set to [:() => null:]. That is, it will complete with |
+ * [:null:]. |
+ * |
+ * If calling [computation] throws, the created future will complete with the |
* error. |
* |
* See [Completer]s, for futures with values that are computed asynchronously. |
+ * |
+ * *Deprecation note*: this method initially took an [int] as argument (the |
+ * milliseconds to wait). It is now a [Duration]. |
*/ |
- factory Future.delayed(int milliseconds, T value()) { |
+ factory Future.delayed(var duration, [T computation()]) { |
+ // TODO(floitsch): no need to allocate a ThenFuture when the computation is |
+ // null. |
+ if (computation == null) computation = (() => null); |
_ThenFuture<dynamic, T> future = |
- new _ThenFuture<dynamic, T>((_) => value()); |
- new Timer(milliseconds, (_) => future._sendValue(null)); |
+ new _ThenFuture<dynamic, T>((_) => computation()); |
+ new Timer(duration, () => future._sendValue(null)); |
return future; |
} |