Skip to content

True Myth / task / allSettled

Function: allSettled()

allSettled<A>(tasks): Task<Settled<A>, never>

Given an array of tasks, return a new Task which resolves once all of the tasks have either resolved or rejected. The resulting Task is a tuple or array corresponding exactly to the tasks passed in, either resolved or rejected.

Example

Given a mix of resolving and rejecting tasks:

ts
let settledTask = allSettled([
  Task.resolve<string, number>("hello"),
  Task.reject<number, boolean>(true),
  Task.resolve<{ fancy: boolean }>, Error>({ fancy: true }),
]);

let output = await settledTask;
if (output.isOk) { // always true, not currently statically knowable
  for (let result of output.value) {
    console.log(result.toString());
  }
}

The resulting output will be:

Ok("hello"),
Err(true),
Ok({ fancy: true }),

Type Parameters

A

A extends readonly AnyTask[]

The type of the array or tuple of tasks.

Parameters

tasks

A

The tasks to wait on settling.

Returns

Task<Settled<A>, never>