Spec-Zone.ru › Dart 2

dart:async

Конструктор Future<T>.delayed

Future<T>.delayed(
  1. Duration duration,
  2. [FutureOr<T> computation( )?]
)

Создаёт 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API