Конструктор Future< T>.delayed
Создаёт Future, который выполняет вычисление после задержки.
computation будет выполнен после истечения указанного duration, а Future будет завершён результатом вычисления.
Если computation возвращает Future, Future, возвращённый этим конструктором, завершится значением или ошибкой этого Future.
Если длительность равна 0 или меньше, Future завершится не раньше следующей итерации цикла обработки событий, после выполнения всех микрозадач.
Если computation не указан, он будет считаться равным () => null для computation, а Future в итоге завершится значением null. В этом случае T должен допускать значение null.
Если вызов computation выбрасывает исключение, созданный Future завершится с ошибкой.
См. также Completer — способ создать и завершить Future позднее, не обязательно после заранее известного фиксированного промежутка времени.
Пример:
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;
}
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-async/Future/Future.delayed.html