API reference@evolu/commonTask › createGate

function createGate(__namedParameters?: { isOpen?: boolean }): Gate;

Defined in: packages/common/src/Task.ts:5497

Creates a Gate.

Example

import {
  assertEqual,
  assertOk,
  assertTrue,
  createGate,
  createRun,
  ok,
  type Task,
} from "@evolu/common";

await using run = createRun();
const networkGate = createGate();

const uploadedItems: Array<string> = [];
const syncOnce =
  (item: string): Task<void> =>
  async (run) => {
    await run.ok(networkGate.wait);
    uploadedItems.push(item);
    return ok();
  };

const first = run(syncOnce("first"));
const second = run(syncOnce("second"));
assertEqual(uploadedItems, []);

networkGate.open();
assertOk(await first, undefined);
assertOk(await second, undefined);
assertEqual(uploadedItems, ["first", "second"]);
assertTrue(networkGate.isOpen());