Dart:直接返回从另一个方法调用中获得的 Future 还是等待它?

问题描述

如果我有一个返回某种类型的 asyncFuture<void> 方法,最后它调用一个返回其他 Future方法,它们之间有什么区别:

Future<void> method() async {
  ...
  return await otherMethodReturningFuture();
}

和:

Future<void> method() async {
  ...
  return otherMethodReturningFutureVoid();
}

(假设我不关心 otherMethodReturningFutureVoid 的返回结果,在这种情况下我可以安全地将其“转换”为 Future<void>,或者它甚至返回 Future<void>。 )

我猜第一个选项会导致两个块放在事件循环中,而第二个只放在一个块中,但是我有什么理由选择一个或另一个吗?

当我在 Flutter 的 ModalRoute 中看到这段代码时,我想到了这个问题:

  @override
  Future<RoutePopdisposition> willPop() async {
    final _ModalScopestate<T> scope = _scopeKey.currentState;
    assert(scope != null);
    for (final WillPopCallback callback in List<WillPopCallback>.from(_willPopCallbacks)) {
      if (await callback() != true)
        return RoutePopdisposition.doNotPop;
    }
    return await super.willPop();
  }

可以这样写:

...
  return super.willPop();

一个比另一个更受欢迎,什么时候?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...