[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Task](https://evolu.dev/docs/api-reference/common/Task) › Gate

Defined in: [packages/common/src/Task.ts:5439](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Task.ts#L5439)

A reusable gate for blocking and releasing [Task](https://evolu.dev/docs/api-reference/common/Task/type-aliases/Task)s.

- **Closed**: Tasks wait.
- **Open**: Tasks proceed.

Use it to pause execution based on a condition. Unlike a [Deferred](https://evolu.dev/docs/api-reference/common/Task/interfaces/Deferred),
which resolves once, a Gate can be opened and closed repeatedly. Opening
releases all current waiters and allows future waiters to pass immediately.
Closing only affects future waiters. Releasing allows current waiters to pass
while keeping future waiters blocked.

[createGate](https://evolu.dev/docs/api-reference/common/Task/functions/createGate) creates a closed Gate by default. Pass `isOpen: true` when
work should proceed immediately.

## See

[createGate](https://evolu.dev/docs/api-reference/common/Task/functions/createGate)

## Properties

<a id="close"></a>

### close

```ts
readonly close: () => boolean;
```

Defined in: [packages/common/src/Task.ts:5447](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Task.ts#L5447)

Closes the gate. Returns false when already closed.

### isOpen

```ts
readonly isOpen: () => boolean;
```

Defined in: [packages/common/src/Task.ts:5453](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Task.ts#L5453)

Returns whether the gate is open.

### open

```ts
readonly open: () => boolean;
```

Defined in: [packages/common/src/Task.ts:5444](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Task.ts#L5444)

Opens the gate, releasing all waiters. Returns false when already open.

### release

```ts
readonly release: () => boolean;
```

Defined in: [packages/common/src/Task.ts:5450](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Task.ts#L5450)

Releases the current closed wait cycle. Returns false when already open.

### wait

```ts
readonly wait: Task<void>;
```

Defined in: [packages/common/src/Task.ts:5441](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Task.ts#L5441)

Waits while the gate is closed.