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()
Task<void, never>
Task.chain<A,B,R,E1,E2,E3,>(tasks: []): Task<R, E1
| E2
| E3>
Task.chain<A,B,C,R,E1,E2,E3,E4,>(tasks: []): 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>
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>