如何合并多个FutureTask,以便我们可以在同一响应中获得所有回调。
我们像这样使用Future<T>

Future<String> getData(int duration) async {
  await Future.delayed(Duration(seconds: duration)); //Mock delay
  return "This a test data for duration $duration";
}
调用上述方法,如getData(2).then((value) => print(value));如果我们要调用多个“ future 任务”,我们该怎么做?

最佳答案

为此,FutureGroup可用于合并多个流

依赖项:

dependencies:
  async: ^2.4.1
如何实现FutureGroup?
FutureGroup futureGroup = FutureGroup();
futureGroup.add(future1);
futureGroup.add(future2);
futureGroup.add(future3);
使用:
void main()  {
  Future<String> future1 = getData(2);
  Future<String> future2 = getData(4);
  Future<String> future3 = getData(6);
  FutureGroup futureGroup = FutureGroup();
  futureGroup.add(future1);
  futureGroup.add(future2);
  futureGroup.add(future3);
  futureGroup.close();
  futureGroup.future.then((value) => {print(value)});
}

Future<String> getData(int duration) async {
  await Future.delayed(Duration(seconds: duration)); //Mock delay
  return "This a test data";
}
输出:

注意:当所有“将来的任务”完成时,它将仅被调用一次,此处将在6秒钟后运行。

09-04 22:41