import { Effect, Duration } from "effect"
// Helper function to simulate a task with a delay
const makeTask = (n: number, delay: Duration.DurationInput) =>
Effect.promise(
() =>
new Promise<void>((resolve) => {
console.log(`start task${n}`) // Logs when the task starts
setTimeout(() => {
console.log(`task${n} done`) // Logs when the task finishes
resolve()
}, Duration.toMillis(delay))
})
)
const task1 = makeTask(1, "300 millis")
const task2 = makeTask(2, "400 millis")
const task3 = makeTask(3, "310 millis")
const task4 = makeTask(4, "410 millis")
const task5 = makeTask(5, "550 millis")
const numbered = Effect.all([task1, task2, task3, task4, task5], {
concurrency: 3
})
Effect.runPromise(numbered)
import { Effect, Duration } from "effect"
// Helper function to simulate a task with a delay
const makeTask = (n: number, delay: Duration.DurationInput) =>
Effect.promise(
() =>
new Promise<void>((resolve) => {
console.log(`start task${n}`) // Logs when the task starts
setTimeout(() => {
console.log(`task${n} done`) // Logs when the task finishes
resolve()
}, Duration.toMillis(delay))
})
)
const task1 = makeTask(1, "300 millis")
const task2 = makeTask(2, "400 millis")
const task3 = makeTask(3, "310 millis")
const task4 = makeTask(4, "410 millis")
const task5 = makeTask(5, "550 millis")
const numbered = Effect.all([task1, task2, task3, task4, task5], {
concurrency: 3
})
Effect.runPromise(numbered)