import { Effect, Queue, Fiber, Console, Schedule } from "effect";
const program = Effect.gen(function* ($) {
const queue = yield* Queue.unbounded<number>();
let i = 0;
const producerGen = Effect.repeat(
Effect.gen(function* () {
yield* Console.log(`producing value ${i}`)
yield* Queue.offer(queue, i)
i += 1;
}),
Schedule.fixed("1 second")
)
const consumerGen = Effect.repeat(
Effect.gen(function* () {
const value = yield* Queue.take(queue);
yield* Console.log(`got ${value}`)
}),
Schedule.fixed("1 second")
);
const consumer = yield* Effect.fork(consumerGen)
const producer = yield* Effect.fork(producerGen)
yield* Fiber.join(consumer)
yield* Fiber.join(producer)
});
Effect.runFork(program)
import { Effect, Queue, Fiber, Console, Schedule } from "effect";
const program = Effect.gen(function* ($) {
const queue = yield* Queue.unbounded<number>();
let i = 0;
const producerGen = Effect.repeat(
Effect.gen(function* () {
yield* Console.log(`producing value ${i}`)
yield* Queue.offer(queue, i)
i += 1;
}),
Schedule.fixed("1 second")
)
const consumerGen = Effect.repeat(
Effect.gen(function* () {
const value = yield* Queue.take(queue);
yield* Console.log(`got ${value}`)
}),
Schedule.fixed("1 second")
);
const consumer = yield* Effect.fork(consumerGen)
const producer = yield* Effect.fork(producerGen)
yield* Fiber.join(consumer)
yield* Fiber.join(producer)
});
Effect.runFork(program)