飞镖如何​​回归未来

时间:2013-11-24 09:01:03

标签: function dart future

在dart中,我想编写一个返回未来的函数。 我无法在任何地方找到一个例子,但我自己还没有想出来。

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

例如为: 我有一些课:

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;
 });
}

当我在主要打电话时:

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,但为时已晚。

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

谢谢, 姆兰

1 个答案:

答案 0 :(得分:3)

Future.then返回Future。因此,您只需返回then电话的结果:

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