🗂

[Flutter]async/await(非同期処理)の意味と使い方の個人的まとめ

2022/09/07に公開

自分の同期非同期のまとめ記事はこちら
ここでの「処方箋に並んでる処理さん達」のイメージで記事にしました。

以下の記事が大変参考になりました!
参考記事
参考記事

同期・非同期処理の復習(主にFutureクラスとして表現)

  • 同期:処理が直列で前の処理が終わるのを待って次の処理を行う。
    (処理が一列に処方箋に並ぶ)
  • 非同期:処理が並列で前の処理を待たず、各々独立して処理開始する。
    (処理が並列に処方箋に並ぶ)

(Futureではなく、Stream(流れるようにデータを断続的に更新する場合) を扱う時はまた変わったりもするがイメージは似ている。また後日まとめる。FutureとStreamに関しては僕の記事のこちらから。)

async/await の意味

参考記事

async

  • 非同期処理したいメソッドの{の前につける

await

  • Futureの非同期処理が完了するまで待ち、非同期処理の結果を取り出せる。

注意点・要点

  1. awaitは、asyncが定義されているメソッド内でのみ使用できる。

  2. asyncを定義したメソッドの戻り値は、Futureでラップした値とする。


戻り値がない場合はFuture<void>が推奨されてるらしい

Sample code1

main.dart
Future task2() async {//asyncで囲み、②戻り値があるのでFuture型でメソッド宣言する
  String result = 'タスク2未完了';
  await Future.delayed(Duration(seconds: 3), () {
    //①:awaitはasyncが定義されているメソッド内でのみ使用可能。
    //await:Future.delayed...の部分の処理が完了した後に次の処理を実行するために置く!!!!
    //await:「この処理を待ってくれい!!」  感。笑
    result = 'タスク2完了';
  });
  return result;
}

Sample code2




以上です。間違えが見つかり次第、或いは知識がアップデートされ次第改訂していきます。🙏
Streamでの扱いもまとめよ、自分的に理解が甘いとこ。

GitHubで編集を提案

Discussion