Future<T>.delayed 构造函数
创建一个在延迟后执行其计算的 future。
computation
将在给定的 duration
到达后执行,并且 future 以计算的结果完成。
如果 computation
返回一个 future,则此构造函数返回的 future 将以该 future 的值或错误完成。
如果持续时间是 0 或更少,则它完成不会早于下一个事件循环迭代,在所有微任务运行之后。
如果省略 computation
,则它将被视为 computation
为 () => null
的情况,并且 future 最终将以 null
值完成。在这种情况下,T
必须可以为 null。
如果调用 computation
抛出异常,所创建的 future 将以该错误完成。
有关稍后创建和完成 future 的方法(不一定是在已知固定持续时间之后),请参阅 Completer。
示例
Future.delayed(const Duration(seconds: 1), () {
print('One second has passed.'); // Prints after 1 second.
});
实现
factory Future.delayed(Duration duration, [FutureOr<T> computation()?]) {
if (computation == null && !typeAcceptsNull<T>()) {
throw ArgumentError.value(
null, "computation", "The type parameter is not nullable");
}
_Future<T> result = new _Future<T>();
new Timer(duration, () {
if (computation == null) {
result._complete(null as T);
} else {
try {
result._complete(computation());
} catch (e, s) {
_completeWithErrorCallback(result, e, s);
}
}
});
return result;
}