initAll static method

Future<void> initAll(
  1. FExecutionContext executionContext,
  2. Iterable<FInitable> instances
)

Implementation

static Future<void> initAll(
  FExecutionContext executionContext,
  Iterable<FInitable> instances,
) async {
  final List<FInitable> intializedInstances = [];
  try {
    for (final instance in instances) {
      await instance.init(executionContext);
      intializedInstances.add(instance);
    }
  } catch (initEx) {
    final List<FException> disposeExs = [];
    for (final intializedInstance in intializedInstances.reversed) {
      try {
        await intializedInstance.dispose();
      } catch (disposeEx) {
        disposeExs.add(FException.wrapIfNeeded(disposeEx));
      }
      if (disposeExs.isNotEmpty) {
        throw FExceptionAggregate([
          FException.wrapIfNeeded(initEx),
          ...disposeExs,
        ]);
      }
    }
    rethrow;
  }
}