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