Spec-Zone.ru › Dart 2

dart:async

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

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

Создаёт отложенное выполнение вычисления.

Вычисление 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

Spec-Zone.ru

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