【问题标题】:how to know if a returned value is a future or not如何知道返回值是否是未来
【发布时间】:2020-04-29 00:17:25
【问题描述】:

我想知道从回调中返回的变量(定义为返回动态)是否是未来。目标是知道是否要await

这是我想知道的示例代码:


dynamic returnedValue = callbackPassedFromArguments();
//the next line is what I want to know

if(isFuture(returnedValue))
{
 dynamic realReturnedValue = await returnedValue;
}
....

有没有可以替代我提到的isFuturepsudoFunction 的函数?

【问题讨论】:

  • 答案是 Future.value,它完全忽略了天气它得到的参数是一个值还是一个未来。这正是我所需要的。
  • Future.valueFuture构造函数。它不会告诉您现有的 Object 是否是 Future
  • 回答你原来的问题:你可以使用returnedValue is Future。或者只是await returnedValue 无条件。

标签: flutter dart future


【解决方案1】:

要测试某事是否是未来,只需进行类型检查returnedValue is Future

在这种情况下,我会这样做:

if (returnedValue is Future) {
 returnedValue = await returnedValue;
}

可以也这样做:

 returnedValue = await returnedValue;

结果是一样的,但是后面的代码会引入异步延迟,因为它实际上将 returnedValue 包装到一个未来,如果它不是一个未来,然后等待那个未来。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-07
    • 2020-03-09
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    相关资源
    最近更新 更多