如何從未來對象返回未來價值? 此代碼不起作用。如何從未來回報未來?或者這是禁止在異步庫?
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>>();
然後用指定爲Future<int>
T
類型的結果從通用類的未來預期?
我結果必須是在類型參數T
中指定的。
即Future<int>.
但結果並不如預期。 在Dart API網站上找不到關於此異常行爲的信息。
如果這是一個「功能」(但我認爲這不正常的行爲錯誤地稱之爲「功能「),那麼爲什麼它沒有在DART API文檔?
如何解釋這種差異?
爲什麼此代碼不會產生錯誤和警告?
另一個相同的例子,但W/O使用未來。
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團隊以這種方式實施了Futures。任何關於不符合標準仿製藥處理的擔憂均由文件中關於如何處理退貨期貨的明確說明處理。 –
programmers.stackexchange.com是理論討論的適當場所。 –