---
metadata:
  - name: generator
    content: Diplodoc Platform v5.39.1
alternate:
  - https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.AsyncStorage.md
  - https://yandex.com/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/util.AsyncStorage.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com/dev/jsapi-v2-1/doc/en/llms.txt

# util.AsyncStorage

Extends [util.Storage](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.Storage.md).

Storage that provides asynchronous access to key values.

[Constructor](#constructor-summary) | [Methods](#methods-summary)

## Constructor {#constructor-summary}

```javascript
util.AsyncStorage()
```

## Methods {#methods-summary}

#|
|| **Name** | **Returns** | **Description** ||
|| [add](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.Storage.md#add)([key](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.Storage.md#add-param-key), [object](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.Storage.md#add-param-object)) | [util.Storage](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.Storage.md) | Adds an object to storage.

Inherited from [util.Storage](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.Storage.md#add). ||
|| [define](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.AsyncStorage.md#define)([key](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.AsyncStorage.md#define-param-key)[, [depends](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.AsyncStorage.md#define-param-depends), [resolveCallback](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.AsyncStorage.md#define-param-resolveCallback)[, [context](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.AsyncStorage.md#define-param-context)]]) | [util.AsyncStorage](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.AsyncStorage.md) | Defines an asynchronous value in storage. ||
|| [get](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.Storage.md#get)([key](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.Storage.md#get-param-key)) | Object | Returns object stored for the specified key, or the primary key, if this is not a string.

Inherited from [util.Storage](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.Storage.md#get). ||
|| [isDefined](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.AsyncStorage.md#isDefined)([key](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.AsyncStorage.md#isDefined-param-key)) | Boolean | Checking if the key can be accessed in the storage. ||
|| [remove](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.Storage.md#remove)([key](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.Storage.md#remove-param-key)) | [util.Storage](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.Storage.md) | Deletes the "key: value" pair from storage.

Inherited from [util.Storage](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.Storage.md#remove). ||
|| [require](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.AsyncStorage.md#require)([keys](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.AsyncStorage.md#require-param-keys)[, [successCallback](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.AsyncStorage.md#require-param-successCallback)[, [errorCallback](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.AsyncStorage.md#require-param-errorCallback)[, [context](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/util.AsyncStorage.md#require-param-context)]]]) | [vow.Promise](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/vow.Promise.md) | Async request to get values from the storage.||
|#

## Methods details {#method_detail}

### define {#define}

```javascript
{util.AsyncStorage} define(key[, depends, resolveCallback[, context]])
```

Defines an asynchronous value in storage.

**Returns** self-reference.

**Parameters:**

#|
|| **Parameter** | **Default value** | **Description**  ||
|| [`key`](#define-param-key)[*](*star) | — | Type: String

The key to use for making an async call. ||
|| [`depends`](#define-param-depends) | — | Type: String[]

Array of keys from the current storage that must be initialized before this key. This argument can be omitted. ||
|| [`resolveCallback`](#define-param-resolveCallback)[*](*star) | — | Type: Function

Function that defines the value accessed by the key. The first argument in resolveCallback is the provide function to pass the value to. Invocation of the provide function can be deferred. The following arguments are values from storage that are specified in dependencies. The order of modules follows their order in the depends array. ||
|| [`context`](#define-param-context) | — | Type: Object

Execution context for the function. ||
|#

\* Mandatory parameter/option.

**Examples:**

**1.**

```javascript
asyncStorage
    .define('red', function (provide) {
        provide('#FF0000');
     });
```

**2.**

```javascript
asyncStorage
    .define('green', function (provide) {
        // The provide function can be called asynchronously.
        setTimeout(function () {
            provide('#008000');
        }, 400);
    });
```

**3.**

```javascript
asyncStorage
    .define('yellow', function (provide) {
         provide('#FFFF00');
    })
    // To define the 'violet' key value, the 'yellow' key value is required.
    .define('violet', ['yellow'], function (provide, yellow) {
        console.log(yellow); // #FFFF00
        setTimeout(function () {
            provide('#9B30FF');
        }, 400);
    });
```

**4.**

```javascript
var asyncStorage = new ymaps.util.AsyncStorage();
asyncStorage
    .define('red', function (provide) {
        provide('#FF0000');
     })
    .define('green', function (provide) {
        setTimeout(function () {
            provide('#008000');
        }, 400);
    })
    .define('yellow', function (provide) {
         provide('#FFFF00');
    })
    .define('violet', ['yellow'], function (provide, yellow) {
        setTimeout(function () {
            provide('#9B30FF');
        }, 400);
    });
// Requesting
asyncStorage.require(['red', 'green', 'violet'])
    .spread(function (red, green, violet) {
         // Outputs #FF0000, #008000, #9B30FF.
         console.log(red, green, violet);
         // After the first async access, values can be accessed from the synchronous interface.
         // Outputs #FF0000 #008000.
         console.log(asyncStorage.get('red'), asyncStorage.get('green'), asyncStorage.get('violet'));
         // The value for the 'yellow' key is also in the storage now, because it was required in order to define 'violet'.
         // Outputs #FFFF00.
         console.log(asyncStorage.get('yellow'));
    });
```

### isDefined {#isDefined}

```javascript
{Boolean} isDefined(key)
```

Checking if the key can be accessed in the storage.

**Returns** true - defined, false - not.

**Parameters:**

#|
|| **Parameter** | **Default value** | **Description**  ||
|| [`key`](#isDefined-param-key)[*](*star) | — | Type: String

Key for the value. ||
|#

\* Mandatory parameter/option.

**Example:**

```javascript
if (asyncStorage.isDefined('red')) {
    asyncStorage.require('red')
        .spread(function (red) {
            // ...
        });
}
```

### require {#require}

```javascript
{vow.Promise} require(keys[, successCallback[, errorCallback[, context]]])
```

Async request to get values from the storage.

**Returns** Promise that represents async access to the value.

**Parameters:**

#|
|| **Parameter** | **Default value** | **Description**  ||
|| [`keys`](#require-param-keys)[*](*star) | — | Type: String\|String[]

Key or array of keys. ||
|| [`successCallback`](#require-param-successCallback) | — | Type: Function

Callback to invoke after getting all the values. Values from storage are passed to the function as arguments. The arguments are ordered according to their order in the keys array. ||
|| [`errorCallback`](#require-param-errorCallback) | — | Type: Function

Callback to use if an error occurs. The error object is passed to the function. ||
|| [`context`](#require-param-context) | — | Type: Object

Callback execution context. ||
|#

\* Mandatory parameter/option.

**Examples:**

**1.**

```javascript
asyncStorage.require(['green'])
    .spread(function (green) {
        // ...
    });
```

**2.**

```javascript
var asyncStorage = new ymaps.util.AsyncStorage();
asyncStorage
    .define('red', function (provide) {
        provide('#FF0000');
     })
    .define('green', function (provide) {
        setTimeout(function () {
            provide('#008000');
        }, 400);
    });
// Requesting
asyncStorage.require(['red', 'green'])
    .spread(function (red, green) {
         // Outputs #FF0000 #008000.
         console.log(red, green);
    });
```

[*star]: Mandatory parameter/option.