Flutter - Asynchronous programming
final / const final
およびconst
は、定数を作成する制御者である.2つのインジケータの違いは、実行時に初期化するか、Compile-timeで初期化するかによって異なります.const
はCompile-timeで初期化され、C言語を例にとると、コンパイル中に設定されたconst
定数は、プログラム内でコンパイラをすべて特定の値に変更しておきます.
ただしfinal
はrun-timeで決定しなければならない定数に使用される.すなわち,直接値を割り当てずにプログラム自体を実行してこそ,値を割り当てることができる.例えば、DateTime.now()
は、現在の時刻を返す方法であり、実行時の時刻を返す.したがって、Compileでは値が分からず初期化できないため、final
インジケータを使用する必要があります.
Isolates and Event loops Isolate
dart
は、内部で単一スレッドプログラムを実行する構造である.必要に応じてさらに(Isolate.spawn()
)を作成することができ、各Isolate
は孤立した空間である.各Isolate
には独立したメモリ領域とイベントループがあり、古いイベント順にタスクを実行します.Isolate
間ではメモリが共有されないため、共有リソースの使用の問題を考慮する必要はなく、メッセージによって通信され、受信メッセージのIsolate
は、その固有のイベントループ空間でこれらの問題を処理する.
Isolate
内部のEvent loop
は本質的に非同期プログラミングを可能にするツールである.Future, Stream, async/await
のような制御者もEvent loop
で操作する.
Future Future
は、非同期プログラミングの結果を示し、後で作業の成果を受け取ることを約束します.
結果物の有無によって3つの状態に分けられる.
Isolate
dart
は、内部で単一スレッドプログラムを実行する構造である.必要に応じてさらに(Isolate.spawn()
)を作成することができ、各Isolate
は孤立した空間である.各Isolate
には独立したメモリ領域とイベントループがあり、古いイベント順にタスクを実行します.Isolate
間ではメモリが共有されないため、共有リソースの使用の問題を考慮する必要はなく、メッセージによって通信され、受信メッセージのIsolate
は、その固有のイベントループ空間でこれらの問題を処理する.Isolate
内部のEvent loop
は本質的に非同期プログラミングを可能にするツールである.Future, Stream, async/await
のような制御者もEvent loop
で操作する.Future Future
は、非同期プログラミングの結果を示し、後で作業の成果を受け取ることを約束します.
結果物の有無によって3つの状態に分けられる.
2.1データ:正常データが戻る
2.2エラー:操作処理中に問題が発生したため、エラーを返す
Future
通常は箱で表され、箱が開いたときに中のものをマークするにはどうすればいいですか.このため、ツールはasync/await
です.async/await
非同期の実行順序を決定するルールは次のとおりです.
async
を関数体に指定します.await
キーワードはasync
と命名された非同期関数でのみ機能します.// This example shows how *not* to write asynchronous Dart code.
String createOrderMessage() {
var order = fetchUserOrder();
return 'Your order is: $order';
}
Future<String> fetchUserOrder() =>
// Imagine that this function is more complex and slow.
Future.delayed(
const Duration(seconds: 2),
() => 'Large Latte',
);
void main() {
print(createOrderMessage());
}
// Your order is: Instance of '_Future<String>'
同期実行手順を見ると、以下のようになります.このプロシージャを回避するには、
async/await
Controllerツールを使用して非同期プロシージャの情報を追加します.
Future<String> createOrderMessage() async{
var order = await fetchUserOrder();
return 'Your order is: $order';
}
Future<String> fetchUserOrder() =>
Future.delayed(
const Duration(seconds: 2),
() => 'Large Latte',
);
void main() async{
print(await createOrderMessage());
}
// Your order is: Instance of Large Latte
ソース
Reference
この問題について(Flutter - Asynchronous programming), 我々は、より多くの情報をここで見つけました https://velog.io/@chlrbtlr30/Flutter-Async-codingテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol