API reference › @evolu/common › Task › 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());