import { Deferred, Duration, Effect, Layer, Logger } from "effect";
const task = Effect.gen(function* () {
const deferred = yield* Deferred.make<number, string>();
console.log("waiting");
setTimeout(() => {
Deferred.succeed(deferred, 10);
}, 2000);
const value = yield* Deferred.await(deferred);
console.log("this never runs, why ?"); // <-----------
yield* Deferred.succeed(deferred, 1);
console.log("deferred:", value);
});
const program = Effect.gen(function* () {
yield* Effect.log("program start");
yield* task;
yield* Effect.log("program end");
});
Effect.runPromise(program.pipe(Effect.provide(Logger.pretty)))
.catch(console.error)
.then((result) => {
console.log(result);
});
import { Deferred, Duration, Effect, Layer, Logger } from "effect";
const task = Effect.gen(function* () {
const deferred = yield* Deferred.make<number, string>();
console.log("waiting");
setTimeout(() => {
Deferred.succeed(deferred, 10);
}, 2000);
const value = yield* Deferred.await(deferred);
console.log("this never runs, why ?"); // <-----------
yield* Deferred.succeed(deferred, 1);
console.log("deferred:", value);
});
const program = Effect.gen(function* () {
yield* Effect.log("program start");
yield* task;
yield* Effect.log("program end");
});
Effect.runPromise(program.pipe(Effect.provide(Logger.pretty)))
.catch(console.error)
.then((result) => {
console.log(result);
});