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>