awaitとasyncが良くわかってないので勉強中
asyncは、この関数は時間がかかりますよという意味(非同期関数であるという宣言)
awaitは、非同期関数を呼び出すときに終わるまで待ちますよという意味(非同期関数を同期処理する)
という解釈でいいんかな
main.dart
void main() async { print("はじめ"); hoge.mysleep(2); print("おわり"); }
Future<void> mysleep(int b) async { print(" オレsleep $b秒 開始"); await Future.delayed(Duration(seconds: b)); print(" オレsleep $b秒 終了"); }
b秒待つ関数mysleepを呼ぶとき、awaitをつける/つけないで動きがどうなってんのか
非同期関数をawaitなしで呼ぶとき
普通に呼ぶと、awaitにぶつかった時点で 呼び出し元に返る。
awaitで待ってる処理は、終わったら続きがうごく
はじめ オレsleep 2秒 開始 おわり オレsleep 2秒 終了
非同期関数をawaitありで呼ぶとき
awaitをつけると、呼び出した関数が終わるまで待つ
はじめ オレsleep 2秒 開始 オレsleep 2秒 終了 おわり
sleep関数を呼ぶとき
sleep function - dart:io library - Dart API
sleep関数はなんか特別で、その場でブロックしてしまうらしい。なので、そのスレッドが止まってしまう。
はじめ 本物sleep 2秒 開始 本物sleep 2秒 終了 おわり
あんまり使わない方がよさそう