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
>