API reference › @evolu/common › Task › createDeferred
function createDeferred<T, E>(): Deferred<T, E>;
Defined in: packages/common/src/Task.ts:5394
Creates a Deferred.
Example
import {
assertFalse,
assertOk,
assertType,
assertTrue,
createDeferred,
createRun,
ok,
type Result,
} from "@evolu/common";
await using run = createRun();
const deferred = createDeferred<string>();
const fiber = run(deferred.task);
assertTrue(deferred.resolve(ok("ready")));
const result = await fiber;
assertType<Result<string>, typeof result>();
assertOk(result, "ready");
// A Deferred is one-shot: later resolutions are ignored, and future
// waiters receive the original Result.
assertFalse(deferred.resolve(ok("late")));
assertOk(await run(deferred.task), "ready");
Aborting a waiter
import {
assertFalse,
assertTrue,
AbortError,
createDeferred,
createRun,
} from "@evolu/common";
await using run = createRun();
const deferred = createDeferred<string>();
const fiber = run.abortable(deferred.task);
fiber.abort({ type: "NoLongerNeeded" });
const result = await fiber;
assertFalse(result.ok);
assertTrue(AbortError.is(result.error));