ステップ 2 の後で dart が関数を「aFunction」と呼ぶのはなぜですか? このコードをコンソールで実行すると、以下のテキストが表示されます。
ステップ2 ステップ1
私のコード:
void main()
{
...
stream.listen(aFunction);
print("Step2");
...
}
void aFunction()
{
print("Step1");
}
手伝ってくれてありがとう。
ステップ 2 の後で dart が関数を「aFunction」と呼ぶのはなぜですか? このコードをコンソールで実行すると、以下のテキストが表示されます。
ステップ2 ステップ1
私のコード:
void main()
{
...
stream.listen(aFunction);
print("Step2");
...
}
void aFunction()
{
print("Step1");
}
手伝ってくれてありがとう。
Dart Stream が約束する数少ない約束の 1 つは、listen 呼び出しに応答してイベントを生成しないことです。イベントは後で発生する可能性がありますが、「listen」を呼び出すコードは、最初のイベントが発生する前に続行して完了することができます。元々、リッスンするとすぐにストリームを起動できるようにしていましたが、それをプログラムしようとすると、実際には完全に制御できませんでした。
'then' など、未来を聞く場合も同様です。コールバックがすぐに来ることはありません。
イベントは通常、トップレベルのイベント ループによって起動されたかのように動作する必要があるため、イベント ハンドラーは、他のコード (再入可能ではない可能性がある他のコード) が実行されているかどうかを気にする必要はありません。
実際には常にそうであるとは限りません。1 つのイベント ハンドラーが同期ストリーム コントローラーを介して他のイベントをトリガーし、1 つのイベントを別のイベントに効果的に変換することができます。そのためには、イベント ハンドラーが何をしているのかを知る必要があります。同期コントローラーは、ストリーム トランスフォーマーなどの内部での使用を目的としており、同期ストリーム コントローラーの使用は一般的には推奨されません。
したがって、いいえ、リッスン呼び出しですぐにコールバックをトリガーすることはできません。