請考慮下面的代碼:未來/完成者只能被調用一次?
import 'dart:async';
abstract class ClassAbstract
{
Completer<String> _onEvent1;
Completer<int> _onEvent2;
ClassAbstract()
{
_onEvent1 = new Completer<String>();
_onEvent2 = new Completer<int>();
}
Future get Event1
{
return _onEvent1.future;
}
Future get Event2
{
return _onEvent2.future;
}
}
class NormalClass extends ClassAbstract
{
NormalClass(): super()
{
_onEvent1.complete("Event1 rise");
for (int iCounter = 0; iCounter < 100; iCounter++)
{
_onEvent2.complete(iCounter);
}
}
}
void main() {
NormalClass normalClass = new NormalClass();
normalClass.Event1.then((val) { print("Event1 rised"); });
normalClass.Event2.then((val) { print("Event2 rised: $val"); });
print("Application close");
}
正如你可以看到它是非常簡單的代碼,有1 abstract
類2 Futures
定義,吸氣對於那些2 Futures
。另一個類實現此類abstract
類並調用Features
來模擬.NET事件系統。
問題是,每當我運行此代碼時,它會失敗,出現錯誤for(int iCounter....)
錯誤:Future already complete
。
這是否意味着我可以complete
未來只有一次?
是的..我已經找到了這個:https://code.google.com/p/dart/issues/detail?id=1873和這個:http://pub.dartlang.org/packages/event_stream 順便說一句:事件的可觀察執行是*驚人的* – Jasper 2013-04-04 12:29:21