1. ホーム
  2. flutter

[解決済み] DartのList.forEach()でAsync/awaitする方法

2023-05-31 04:49:33

質問

私はある種のボット(コマンドラインアプリケーション)を書いているのですが、"forEach"メソッドを使用しているときに非同期実行で問題が発生しました。 以下は、私がやろうとしていることの簡略化されたコードです。

main() async {
  print("main start");
  await asyncOne();
  print("main end");
}

asyncOne() async {
  print("asyncOne start");
  [1, 2, 3].forEach(await (num) async {
    await asyncTwo(num);
  });
  print("asyncOne end");
}

asyncTwo(num) async
{
  print("asyncTwo #${num}");
}

そして、これがその出力です。

main start
asyncOne start
asyncOne end
main end
asyncTwo #1
asyncTwo #2
asyncTwo #3

私が得ようとしているものは:

main start
asyncOne start
asyncTwo #1
asyncTwo #2
asyncTwo #3
asyncOne end
main end

もし誰かが私が間違っていることを知っているならば、私はそれを感謝します。

どのように解決するのですか?

でやりたいことは実現できないと思います。 forEach メソッドでは実現できないと思います。しかし for ループで動作します。例

asyncOne() async {
  print("asyncOne start");
  for (num number in [1, 2, 3])
    await asyncTwo(number);
  print("asyncOne end");
}