async
関数を修飾するために使用され、その関数が非同期処理を含むことを意味する。
asyncを使って定義された関数は、Futureオブジェクトを返す。
Future
Futureは非同期操作の結果を表すオブジェクトで、その操作が完了する未来のある時点で値を提供する。
await
awaitキーワードはasync関数内で使用され、Futureが解決されるまで処理の実行を一時停止する。awaitの後ろにはFutureを返す式を置く。
Futureの処理が完了するのを待ってから次の行のコードが実行される。
asyncとawaitによって非同期処理のコードが同期処理のように直感的に書くことが可能。
サンプルコード(Dart)
import 'dart:async';
// データを非同期的に取得する関数
Future<String> fetchData() async {
// 2秒間の遅延をシミュレート
await Future.delayed(Duration(seconds: 2));
return '取得したデータ';
}
void displayData() async {
print('データ取得中...');
// fetchDataがデータを取得し終わるまで待機
String data = await fetchData();
// データが取得できたらそれを表示
print('データ受信完了: $data');
}
void main() {
displayData();
print('リクエスト送信完了, 待機中。。。');
}
結果は
データ取得中...
リクエスト送信完了, 待機中。。。
**ここで2秒間待機**
データ受信完了: 取得したデータ