function - dart 如何返回 future

标签 function dart future

在 dart 中,我想编写一个返回 future 的函数。 我在任何地方都找不到例子,而且自己还没有弄清楚。

该函数包含对返回 future 的其他函数的调用以及顺序代码。

例如: 我有一些课:

class Basic {
 int x;
}

假设已经存在一个函数:

Future<int> f(int x);

我的函数应该返回一个 Basic 对象,其值为 f() + 一些数字:

Future<Basic> myFunction(int y) {

 Basic b;

 f(y).then((z) {
  b.x = z + y;
  return b;
 });
}

当我在 main 中调用它时:

void main() {
 Future<Basic> basic_future = myFunction(3);

 basic_future.then((result) => print(result.x));

}
basic_future.then 语句抛出异常,因为 basic_future 为 null,即我认为发生的情况是 myFunction 在 f() 运行之前出现并返回 null,因此 basic_future 为 null。后来 f() 返回并返回正确的 basic_future,但为时已晚。

如何解决这个问题? (希望这是可以理解的)

谢谢, 伊姆兰

最佳答案

Future.then返回一个Future。因此,您只需返回 then 调用的结果:

Future<Basic> myFunction(int y) {
  return f(y).then((z) {
    Basic b = new Basic();
    b.x = z + y;
    return b;
  });
}

关于function - dart 如何返回 future,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20172799/

相关文章:

Javascript 函数与 DOM 的区别?

dart - 如何在 Flutter 中移除 AppBar 前导图标周围的额外填充

使用 Theme.of(context).textTheme 的 Flutter 无效常量值

java - 将 ListenableFuture 链转换为等效的 RxJava 结构

rust - and_then 方法在 futures 0.3 中找不到

JavaScript:尝试使用由于某种原因无法运行的类函数

C 对递归函数的说明

flutter - 获取 token 失败

scala - 用 For Comprehension 组合 Futures

c++ - 多维数组c++