const program = Effect.gen(function* (_) {
const chunk = Chunk.range(0, 110);
const queue = yield* _(Queue.unbounded<number>());
yield* _(Queue.offerAll(chunk)(queue));
console.log('queue size', yield* _(Queue.size(queue)));
yield* _(
Queue.takeN(100)(queue).pipe(Effect.timeout('1 seconds')),
Effect.tap(() =>
Effect.gen(function* (_) {
console.log('queue size after taking 100 elements', yield* _(Queue.size(queue)));
})
),
Effect.orElse(() =>
Effect.gen(function* (_) {
console.log('queue size after timeout', yield* _(Queue.size(queue)));
return yield* _(Queue.takeUpTo(100)(queue));
})
),
Effect.forever
);
});
const program = Effect.gen(function* (_) {
const chunk = Chunk.range(0, 110);
const queue = yield* _(Queue.unbounded<number>());
yield* _(Queue.offerAll(chunk)(queue));
console.log('queue size', yield* _(Queue.size(queue)));
yield* _(
Queue.takeN(100)(queue).pipe(Effect.timeout('1 seconds')),
Effect.tap(() =>
Effect.gen(function* (_) {
console.log('queue size after taking 100 elements', yield* _(Queue.size(queue)));
})
),
Effect.orElse(() =>
Effect.gen(function* (_) {
console.log('queue size after timeout', yield* _(Queue.size(queue)));
return yield* _(Queue.takeUpTo(100)(queue));
})
),
Effect.forever
);
});