withContextGroup<T> function

Future<T> withContextGroup<T>(
  1. Iterable<FutureContext> contexts,
  2. FutureSuspendBlock<T> block
)

指定した contexts を使用してsuspend関数を実行する. 実行中に contexts のいずれかがキャンセルされた場合、この関数は CancellationException を投げて早期終了する.

suspend()関数は1コールのオーバーヘッドが大きいため、 内部でキャンセル処理が必要なほど長い場合に利用する.

Implementation

Future<T> withContextGroup<T>(
  Iterable<FutureContext> contexts,
  FutureSuspendBlock<T> block,
) async {
  final c = FutureContext.group(contexts);
  try {
    return await c.suspend(block);
  } finally {
    await c.close();
  }
}