method Task.chain
Task.chain(arr: []): Task<void, never>

Runs tasks sequentially, passing the successful value from one to the next. If any task fails, the chain is short-circuited and the error is returned.

Return types -> parameter type inference is supported up to an arbitrary 7 tasks. If you need more, you can just chain two chains.

Example usage:

Task.chain([
  () => Task.of(() => 1),
  (prev) => Task.of(() => prev + 1),
  (prev) => Task.of(() => `Result: ${prev}`),
]).tap((result) => {
  console.log(result) // "Result: 2"
}).run()

Parameters

arr: []

Return Type

Task<void, never>
Task.chain<R, E1>(tasks: [() => Task<R, E1>]): Task<R, E1>

Type Parameters

Parameters

tasks: [() => Task<R, E1>]

Return Type

Task.chain<A, R, E1, E2>(tasks: [() => Task<A, E1>, (prev: A) => Task<R, E2>]): Task<R, E1 | E2>

Type Parameters

Parameters

tasks: [() => Task<A, E1>, (prev: A) => Task<R, E2>]

Return Type

Task<R, E1 | E2>
Task.chain<A, B, R, E1, E2, E3>(tasks: [
() => Task<A, E1>,
(prev: A) => Task<B, E2>,
(prev: B) => Task<R, E3>
]
): Task<R, E1 | E2 | E3>

Type Parameters

Parameters

tasks: [
() => Task<A, E1>,
(prev: A) => Task<B, E2>,
(prev: B) => Task<R, E3>
]

Return Type

Task<R, E1 | E2 | E3>
Task.chain<A, B, C, R, E1, E2, E3, E4>(tasks: [
() => Task<A, E1>,
(prev: A) => Task<B, E2>,
(prev: B) => Task<C, E3>,
(prev: C) => Task<R, E4>
]
): Task<R, E1 | E2 | E3 | E4>

Type Parameters

Parameters

tasks: [
() => Task<A, E1>,
(prev: A) => Task<B, E2>,
(prev: B) => Task<C, E3>,
(prev: C) => Task<R, E4>
]

Return Type

Task<R, E1 | E2 | E3 | E4>
Task.chain<A, B, C, D, R, E1, E2, E3, E4, E5>(tasks: [
() => Task<A, E1>,
(prev: A) => Task<B, E2>,
(prev: B) => Task<C, E3>,
(prev: C) => Task<D, E4>,
(prev: D) => Task<R, E5>
]
): Task<R, E1 | E2 | E3 | E4 | E5>

Type Parameters

Parameters

tasks: [
() => Task<A, E1>,
(prev: A) => Task<B, E2>,
(prev: B) => Task<C, E3>,
(prev: C) => Task<D, E4>,
(prev: D) => Task<R, E5>
]

Return Type

Task<R, E1 | E2 | E3 | E4 | E5>
Task.chain<A, B, C, D, E, R, E1, E2, E3, E4, E5, E6>(tasks: [
() => Task<A, E1>,
(prev: A) => Task<B, E2>,
(prev: B) => Task<C, E3>,
(prev: C) => Task<D, E4>,
(prev: D) => Task<E, E5>,
(prev: E) => Task<R, E6>
]
): Task<R, E1 | E2 | E3 | E4 | E5 | E6>

Type Parameters

Parameters

tasks: [
() => Task<A, E1>,
(prev: A) => Task<B, E2>,
(prev: B) => Task<C, E3>,
(prev: C) => Task<D, E4>,
(prev: D) => Task<E, E5>,
(prev: E) => Task<R, E6>
]

Return Type

Task<R, E1 | E2 | E3 | E4 | E5 | E6>
Task.chain<A, B, C, D, E, F, R, E1, E2, E3, E4, E5, E6, E7>(tasks: [
() => Task<A, E1>,
(prev: A) => Task<B, E2>,
(prev: B) => Task<C, E3>,
(prev: C) => Task<D, E4>,
(prev: D) => Task<E, E5>,
(prev: E) => Task<F, E6>,
(prev: F) => Task<R, E7>
]
): Task<R, E1 | E2 | E3 | E4 | E5 | E6 | E7>

Type Parameters

Parameters

tasks: [
() => Task<A, E1>,
(prev: A) => Task<B, E2>,
(prev: B) => Task<C, E3>,
(prev: C) => Task<D, E4>,
(prev: D) => Task<E, E5>,
(prev: E) => Task<F, E6>,
(prev: F) => Task<R, E7>
]

Return Type

Task<R, E1 | E2 | E3 | E4 | E5 | E6 | E7>