executeAllAndWaitResults<P, R> method

Future<List<R>> executeAllAndWaitResults<P, R>(
  1. Iterable<AsyncTask<P, R>> tasks, {
  2. AsyncExecutorSharedDataInfo? sharedDataInfo,
  3. bool disposeSentSharedData = false,
})

Executes all the tasks using this executor and waits for the results.

Implementation

Future<List<R>> executeAllAndWaitResults<P, R>(
    Iterable<AsyncTask<P, R>> tasks,
    {AsyncExecutorSharedDataInfo? sharedDataInfo,
    bool disposeSentSharedData = false}) async {
  if (disposeSentSharedData) {
    sharedDataInfo ??= AsyncExecutorSharedDataInfo();

    var executions = executeAll(tasks, sharedDataInfo: sharedDataInfo);
    var results = await Future.wait(executions);

    if (sharedDataInfo.sentSharedDataSignatures.isNotEmpty) {
      await disposeSharedData(sharedDataInfo.sentSharedDataSignatures);
      sharedDataInfo.disposedSharedDataSignatures
          .addAll(sharedDataInfo.sentSharedDataSignatures);
    }

    return results;
  } else {
    var executions = executeAll(tasks, sharedDataInfo: sharedDataInfo);
    return Future.wait(executions);
  }
}