所以,我有一个映射,它必须使用里面的项进行一些异步处理.我使用了forEach循环 struct ,并且在内部回调被设计为异步的,因为我在迭代体内调用了等待

myMap.forEach((a, b) { await myAsyncFunc(); } );
callFunc();

我需要在迭代所有项之后调用callFunc().但forEach立即退出.帮助

推荐答案

使用for循环超过Map.entries而不是forEach.如果您使用的是异步函数,那么在for循环体中等待将暂停迭代.entry对象还允许您访问键和值.

Future<void> myFunction() async {
  for (var entry in myMap.entries) {
    await myAsyncFunction(entry.key, entry.value);
  }
  callFunc();
}

Dart相关问答推荐

如何判断一个数字是否是dart中另一个数字的倍数?

将Card添加到 ListView

Task 'app:processDebugResources'的Flutter执行失败

Swipe返回手势

如何在 Dart 中创建画布元素?

如何使用 Dart 分析器从源代码生成 AST 并使用 AST?

如何实现 Iterable

如何在 Dart 中设置文本框的值?

如何将圆形边框设置为flutter上的MaterialButton?

Dart/Flutter 如何在 map 中初始化列表?

如何判断设备是否需要 SafeArea?

使用 Stream.periodic 时如何取消 Stream?

如何将条目添加到列表中的特定索引?

如何在 Dart 中使用 char 类型?

如何在 Dart 中将 UTF-8 字符串转换为字节数组?

DART:future的语法 then

在 Dart 中是否允许在 for 循环中等待?

如何在 Dart 中获取文件名?

如何将 `ByteData` 实例写入 Dart 中的文件?

dart 折叠(Fold)与减少(Reduce)