次のコードを検討してください。
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 の getter を持つ非常に単純なコードですFutures
。このクラスを実装し、 .NET イベント システムをシミュレートabstract
するために を呼び出す別のクラス。Features
問題は、このコードを実行するたびにfor(int iCounter....)
、 error: に沿ったエラーで失敗することですFuture already complete
。
complete
Future は一度しかできないということですか?