const task1 = Effect.fn("task1")(function* () {
console.log("task1");
return 1;
})
const task2 = Effect.fn("task2")(function* (result1: number) {
console.log(`task2 [result1=${result1}]`);
yield* Effect.sleep("1 second");
return 2;
})
const task3 = Effect.fn("task3")(function* (result1: number) {
console.log(`task3 [result1=${result1}]`);
return 3;
})
const task4 = Effect.fn("task4")(function* (result2: number, result3: number) {
console.log(`task4 [result2=${result2}, result3=${result3}]`);
return 4;
})
const program = Effect.Do.pipe(
Effect.bind("result1", () => task1()),
Effect.bind("result2", ({ result1 }) => task2(result1)),
Effect.bind("result3", ({ result1 }) => task3(result1)),
Effect.bind("result4", ({ result2, result3 }) => task4(result2, result3)),
Effect.andThen(Effect.log),
)
NodeRuntime.runMain(program)
const task1 = Effect.fn("task1")(function* () {
console.log("task1");
return 1;
})
const task2 = Effect.fn("task2")(function* (result1: number) {
console.log(`task2 [result1=${result1}]`);
yield* Effect.sleep("1 second");
return 2;
})
const task3 = Effect.fn("task3")(function* (result1: number) {
console.log(`task3 [result1=${result1}]`);
return 3;
})
const task4 = Effect.fn("task4")(function* (result2: number, result3: number) {
console.log(`task4 [result2=${result2}, result3=${result3}]`);
return 4;
})
const program = Effect.Do.pipe(
Effect.bind("result1", () => task1()),
Effect.bind("result2", ({ result1 }) => task2(result1)),
Effect.bind("result3", ({ result1 }) => task3(result1)),
Effect.bind("result4", ({ result2, result3 }) => task4(result2, result3)),
Effect.andThen(Effect.log),
)
NodeRuntime.runMain(program)