Future<T>.delayed 构造函数

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

    创建一个在延迟后执行其计算的 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;
    }