---
title: "Async"
---
# Async

Defined in: [src/core/async/async.ts:35](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L35)

## Implements

- [`IAsync`](../interfaces/types.IAsync.html)

### Constructor

**new Async**(): `Async`

#### Returns

`Async`

### isDestructed

**isDestructed**: `boolean` = `false`

Defined in: [src/core/async/async.ts:492](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L492)

### delay()

**delay**(`timeout`): [`RejectablePromise`](../interfaces/types.RejectablePromise.html)\<`void`\>

Defined in: [src/core/async/async.ts:39](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L39)

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `timeout` | `number` \| [`IAsyncParams`](../interfaces/types.IAsyncParams.html) |

#### Returns

[`RejectablePromise`](../interfaces/types.RejectablePromise.html)\<`void`\>

#### Implementation of

[`IAsync`](../interfaces/types.IAsync.html).[`delay`](../interfaces/types.IAsync.html#delay)

***

### setTimeout()

**setTimeout**(`callback`, `timeout`, ...`args`): `number`

Defined in: [src/core/async/async.ts:43](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L43)

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `callback` | `Callback` |
| `timeout` | `number` \| [`IAsyncParams`](../interfaces/types.IAsyncParams.html) \| `undefined` |
| ...`args` | `any`[] |

#### Returns

`number`

#### Implementation of

[`IAsync`](../interfaces/types.IAsync.html).[`setTimeout`](../interfaces/types.IAsync.html#settimeout)

***

### updateTimeout()

**updateTimeout**(`label`, `timeout`): [`Nullable`](../modules/types.html#nullable)\<`number`\>

Defined in: [src/core/async/async.ts:76](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L76)

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `label` | `string` |
| `timeout` | `number` |

#### Returns

[`Nullable`](../modules/types.html#nullable)\<`number`\>

#### Implementation of

[`IAsync`](../interfaces/types.IAsync.html).[`updateTimeout`](../interfaces/types.IAsync.html#updatetimeout)

***

#### Call Signature

**clearTimeout**(`timer`): `void`

Defined in: [src/core/async/async.ts:96](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L96)

##### Parameters

| Parameter | Type |
| ------ | ------ |
| `timer` | `number` |

##### Returns

`void`

##### Implementation of

[`IAsync`](../interfaces/types.IAsync.html).[`clearTimeout`](../interfaces/types.IAsync.html#cleartimeout)

#### Call Signature

**clearTimeout**(`label`): `void`

Defined in: [src/core/async/async.ts:97](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L97)

##### Parameters

| Parameter | Type |
| ------ | ------ |
| `label` | `string` |

##### Returns

`void`

##### Implementation of

[`IAsync`](../interfaces/types.IAsync.html).[`clearTimeout`](../interfaces/types.IAsync.html#cleartimeout)

***

### debounce()

**debounce**(`fn`, `timeout`, `firstCallImmediately?`): [`CallbackFunction`](../interfaces/types.CallbackFunction.html)

Defined in: [src/core/async/async.ts:120](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L120)

Debouncing enforces that a function not be called again until a certain amount of time has passed without
it being called. As in "execute this function only if 100 milliseconds have passed without it being called."

#### Parameters

| Parameter | Type | Default value |
| ------ | ------ | ------ |
| `fn` | [`CallbackFunction`](../interfaces/types.CallbackFunction.html) | `undefined` |
| `timeout` | [`IAsyncParams`](../interfaces/types.IAsyncParams.html) \| [`ITimeout`](../modules/types.html#itimeout) | `undefined` |
| `firstCallImmediately` | `boolean` | `false` |

#### Returns

[`CallbackFunction`](../interfaces/types.CallbackFunction.html)

#### Example

```javascript
var jodit = Jodit.make('.editor');
jodit.e.on('mousemove', jodit.async.debounce(() => {
  // Do expensive things
}, 100));
```

#### Implementation of

[`IAsync`](../interfaces/types.IAsync.html).[`debounce`](../interfaces/types.IAsync.html#debounce)

***

### microDebounce()

**microDebounce**\<`T`\>(`fn`, `firstCallImmediately?`): `T`

Defined in: [src/core/async/async.ts:190](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L190)

#### Type Parameters

| Type Parameter |
| ------ |
| `T` *extends* [`CallbackFunction`](../interfaces/types.CallbackFunction.html)\<`any`\> |

#### Parameters

| Parameter | Type | Default value |
| ------ | ------ | ------ |
| `fn` | `T` | `undefined` |
| `firstCallImmediately` | `boolean` | `false` |

#### Returns

`T`

#### Implementation of

[`IAsync`](../interfaces/types.IAsync.html).[`microDebounce`](../interfaces/types.IAsync.html#microdebounce)

***

### throttle()

**throttle**(`fn`, `timeout`, `ignore?`): [`CallbackFunction`](../interfaces/types.CallbackFunction.html)

Defined in: [src/core/async/async.ts:236](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L236)

Throttling enforces a maximum number of times a function can be called over time.
As in "execute this function at most once every 100 milliseconds."

#### Parameters

| Parameter | Type | Default value |
| ------ | ------ | ------ |
| `fn` | [`CallbackFunction`](../interfaces/types.CallbackFunction.html) | `undefined` |
| `timeout` | [`IAsyncParams`](../interfaces/types.IAsyncParams.html) \| [`ITimeout`](../modules/types.html#itimeout) | `undefined` |
| `ignore` | `boolean` | `false` |

#### Returns

[`CallbackFunction`](../interfaces/types.CallbackFunction.html)

#### Example

```javascript
var jodit = Jodit.make('.editor');
jodit.e.on(document.body, 'scroll', jodit.async.throttle(function() {
  // Do expensive things
}, 100));
```

#### Implementation of

[`IAsync`](../interfaces/types.IAsync.html).[`throttle`](../interfaces/types.IAsync.html#throttle)

***

### promise()

**promise**\<`T`\>(`executor`): [`RejectablePromise`](../interfaces/types.RejectablePromise.html)\<`T`\>

Defined in: [src/core/async/async.ts:278](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L278)

#### Type Parameters

| Type Parameter |
| ------ |
| `T` |

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `executor` | (`resolve`, `reject`) => `void` |

#### Returns

[`RejectablePromise`](../interfaces/types.RejectablePromise.html)\<`T`\>

#### Implementation of

[`IAsync`](../interfaces/types.IAsync.html).[`promise`](../interfaces/types.IAsync.html#promise)

***

### promiseState()

**promiseState**(`p`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`"pending"` \| `"fulfilled"` \| `"rejected"`\>

Defined in: [src/core/async/async.ts:315](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L315)

Get Promise status

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `p` | [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`any`\> |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`"pending"` \| `"fulfilled"` \| `"rejected"`\>

#### Implementation of

[`IAsync`](../interfaces/types.IAsync.html).[`promiseState`](../interfaces/types.IAsync.html#promisestate)

***

### requestIdleCallback()

**requestIdleCallback**(`callback`, `options?`): `number`

Defined in: [src/core/async/async.ts:376](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L376)

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `callback` | `IdleRequestCallback` |
| `options` | \{ `timeout`: `number`; \} |
| `options.timeout` | `number` |

#### Returns

`number`

#### Implementation of

[`IAsync`](../interfaces/types.IAsync.html).[`requestIdleCallback`](../interfaces/types.IAsync.html#requestidlecallback)

***

### requestIdlePromise()

**requestIdlePromise**(`options?`): [`RejectablePromise`](../interfaces/types.RejectablePromise.html)\<`number`\>

Defined in: [src/core/async/async.ts:385](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L385)

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `options?` | \{ `timeout`: `number`; \} |
| `options.timeout?` | `number` |

#### Returns

[`RejectablePromise`](../interfaces/types.RejectablePromise.html)\<`number`\>

#### Implementation of

[`IAsync`](../interfaces/types.IAsync.html).[`requestIdlePromise`](../interfaces/types.IAsync.html#requestidlepromise)

***

### schedulerPostTask()

**schedulerPostTask**\<`T`\>(`task`, `options?`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`T`\>

Defined in: [src/core/async/async.ts:399](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L399)

Try to use scheduler.postTask if it is available https://wicg.github.io/scheduling-apis/

#### Type Parameters

| Type Parameter | Default type |
| ------ | ------ |
| `T` | `void` |

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `task` | () => `T` |
| `options` | \{ `signal?`: [`AbortSignal`](https://developer.mozilla.org/docs/Web/API/AbortSignal); `delay?`: `number`; `priority?`: `"background"` \| `"user-blocking"` \| `"user-visible"`; \} |
| `options.signal?` | [`AbortSignal`](https://developer.mozilla.org/docs/Web/API/AbortSignal) |
| `options.delay?` | `number` |
| `options.priority?` | `"background"` \| `"user-blocking"` \| `"user-visible"` |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`T`\>

#### Implementation of

[`IAsync`](../interfaces/types.IAsync.html).[`schedulerPostTask`](../interfaces/types.IAsync.html#schedulerposttask)

***

### schedulerYield()

**schedulerYield**(): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\>

Defined in: [src/core/async/async.ts:456](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L456)

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\>

#### Implementation of

[`IAsync`](../interfaces/types.IAsync.html).[`schedulerYield`](../interfaces/types.IAsync.html#scheduleryield)

***

### cancelIdleCallback()

**cancelIdleCallback**(`request`): `void`

Defined in: [src/core/async/async.ts:460](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L460)

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `request` | `number` |

#### Returns

`void`

#### Implementation of

[`IAsync`](../interfaces/types.IAsync.html).[`cancelIdleCallback`](../interfaces/types.IAsync.html#cancelidlecallback)

***

### requestAnimationFrame()

**requestAnimationFrame**(`callback`): `number`

Defined in: [src/core/async/async.ts:465](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L465)

Smart wrapper for `requestAnimationFrame`

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `callback` | `FrameRequestCallback` |

#### Returns

`number`

#### Implementation of

[`IAsync`](../interfaces/types.IAsync.html).[`requestAnimationFrame`](../interfaces/types.IAsync.html#requestanimationframe)

***

### cancelAnimationFrame()

**cancelAnimationFrame**(`request`): `void`

Defined in: [src/core/async/async.ts:471](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L471)

Smart wrapper for `cancelAnimationFrame`

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `request` | `number` |

#### Returns

`void`

#### Implementation of

[`IAsync`](../interfaces/types.IAsync.html).[`cancelAnimationFrame`](../interfaces/types.IAsync.html#cancelanimationframe)

***

### clear()

**clear**(): `void`

Defined in: [src/core/async/async.ts:476](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L476)

#### Returns

`void`

#### Implementation of

[`IAsync`](../interfaces/types.IAsync.html).[`clear`](../interfaces/types.IAsync.html#clear)

***

### destruct()

**destruct**(): `any`

Defined in: [src/core/async/async.ts:494](https://github.com/xdan/jodit/blob/main/src/core/async/async.ts#L494)

#### Returns

`any`

#### Implementation of

[`IAsync`](../interfaces/types.IAsync.html).[`destruct`](../interfaces/types.IAsync.html#destruct)
