Метод clear: очистка хранилища

Метод clear в библиотеке localForage предназначен для полной очистки выбранного хранилища. Он удаляет все ключи и соответствующие им значения в текущем экземпляре, независимо от типа используемого драйвера (IndexedDB, WebSQL или localStorage). Операция выполняется асинхронно и возвращает Promise, что позволяет интегрировать её в цепочки обработки данных без блокировки основного потока выполнения.


Сигнатура метода

localforage.clear(): Promise<void>

Метод не принимает аргументов и всегда возвращает промис, который:

  • resolve — после успешного удаления всех данных;
  • reject — при возникновении ошибки во время операции очистки.

Базовый принцип работы

Внутри localForage каждая запись хранится в виде пары ключ–значение. Метод clear выполняет массовое удаление всех таких пар для текущего пространства имён (store instance).

Важно учитывать:

  • очистка затрагивает только текущий instance;
  • данные в других инстансах с иным name или storeName остаются нетронутыми;
  • операция зависит от выбранного драйвера, но поведение унифицировано.

Пример использования

localforage.clear()
  .then(() => {
    console.log('Хранилище полностью очищено');
  })
  .catch((err) => {
    console.error('Ошибка очистки:', err);
  });

Аналогичный вариант с async/await:

async function resetStorage() {
  try {
    await localforage.clear();
    console.log('Очистка завершена');
  } catch (err) {
    console.error('Не удалось очистить хранилище:', err);
  }
}

Поведение при разных драйверах

IndexedDB

При использовании IndexedDB выполняется удаление всех записей из object store текущего хранилища. Операция обычно наиболее эффективна по сравнению с построчным удалением.

WebSQL

В WebSQL очистка реализуется через SQL-команду удаления всех строк таблицы, связанной с текущим store.

localStorage

В случае localStorage происходит перебор всех ключей, относящихся к текущему namespace, и их последовательное удаление.


Важные особенности

Асинхронность

Метод всегда асинхронный, даже если драйвер потенциально поддерживает синхронное удаление. Это сделано для единообразия API:

console.log('до очистки');

localforage.clear().then(() => {
  console.log('после очистки');
});

console.log('между вызовами');

Вывод:

до очистки
между вызовами
после очистки

Изоляция store

Очистка применяется только к текущему экземпляру:

const userStore = localforage.createInstance({
  name: 'app',
  storeName: 'users'
});

const cacheStore = localforage.createInstance({
  name: 'app',
  storeName: 'cache'
});

await userStore.clear();
// cacheStore останется без изменений

Потенциальная потеря данных

Метод не выполняет выборочную очистку и не поддерживает фильтры. Все ключи удаляются без возможности восстановления через API localForage.


Ошибки и обработка исключений

Наиболее частые причины отказа:

  • отсутствие доступа к storage (например, режим приватного просмотра);
  • повреждённая база IndexedDB;
  • блокировка браузером операций записи;
  • переполнение или нестабильное состояние хранилища.

Пример обработки:

localforage.clear()
  .catch((err) => {
    if (err.code === 18) {
      console.warn('Доступ к хранилищу ограничен');
    } else {
      console.error('Неожиданная ошибка:', err);
    }
  });

Производительность

Очистка хранилища в localForage обычно выполняется быстрее, чем удаление каждого ключа по отдельности:

  • IndexedDB: одна транзакция удаления всех записей;
  • WebSQL: единый SQL-запрос;
  • localStorage: цикл по ключам (медленнее при большом объёме данных).

При больших объёмах данных clear предпочтительнее ручного удаления через removeItem.


Взаимодействие с другими методами

После вызова clear:

  • getItem возвращает null для всех ключей;
  • length() возвращает 0;
  • keys() возвращает пустой массив.
await localforage.setItem('a', 1);
await localforage.setItem('b', 2);

await localforage.clear();

const keys = await localforage.keys(); // []

Сценарии применения

Сброс состояния приложения

Используется при полном сбросе пользовательских данных, например при выходе из аккаунта или смене профиля.

Очистка кэша

Удаление временных данных:

const cache = localforage.createInstance({
  name: 'app',
  storeName: 'cache'
});

await cache.clear();

Пересоздание структуры данных

Применяется при миграции схемы хранения, когда старые ключи несовместимы с новой версией приложения.


Ограничения

  • отсутствие возможности выборочного удаления;
  • невозможность восстановления данных после выполнения;
  • зависимость от состояния драйвера и браузера;
  • различная производительность в зависимости от backend.

Метод clear представляет собой операцию полного сброса логического пространства хранения в рамках localForage, обеспечивая единообразное поведение поверх различных браузерных механизмов хранения данных и упрощая управление жизненным циклом локальных данных.