【发布时间】:2013-06-01 09:18:13
【问题描述】:
如何从 Future 对象返回 Future 值? 此代码不起作用。
import 'dart:async';
void main() {
var temp = foo();
temp.then((Future<int> future) {
future.then((int result) {
print(result);
});
});
}
Future<Future<int>> foo() {
return new Future<Future<int>>(() {
return new Future<int>(() => 5);
});
}
如何防止不必要的展开?
在这种情况下,异步库“Future”被声明为泛型类。
abstract class Future<T> {
}
如果我创建如下表达式
new Future<Future<int>>();
然后将类型T 指定为Future<int> 泛型类Future 预期的结果是什么?
我认为结果必须与类型参数 T 中指定的一致。
即Future<int>.
但结果并不如预期。 在 Dart API 站点上没有找到有关此异常行为的信息。
如果这是一个“功能”(但我认为异常行为错误地称为“功能”)那么为什么它没有记录在 Dart API 中?
如何解释这种差异?
为什么这段代码没有产生错误和警告?
另一个相同的示例,但不使用 Future。
void main() {
var temp = foo();
temp.baz((Foo<int> foo) {
foo.baz((int result) {
print(result);
});
});
}
Foo<Foo<int>> foo() {
return new Foo<Foo<int>>(() {
return new Foo<int>(() => 5);
});
}
如果在这种情况下结果与使用 Future 时一样(即意外),那么我们如何调用此代码? 正常还是异常?
或者也许 Dart 中的未来有什么特别的(魔法)?
【问题讨论】:
标签: dart dart-async