Метод clear в библиотеке localForage предназначен для
полной очистки выбранного хранилища. Он удаляет все ключи и
соответствующие им значения в текущем экземпляре, независимо от типа
используемого драйвера (IndexedDB, WebSQL или localStorage). Операция
выполняется асинхронно и возвращает Promise, что позволяет
интегрировать её в цепочки обработки данных без блокировки основного
потока выполнения.
localforage.clear(): Promise<void>
Метод не принимает аргументов и всегда возвращает промис, который:
Внутри localForage каждая запись хранится в виде пары ключ–значение.
Метод clear выполняет массовое удаление всех таких пар для
текущего пространства имён (store 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 выполняется удаление всех записей из object store текущего хранилища. Операция обычно наиболее эффективна по сравнению с построчным удалением.
В WebSQL очистка реализуется через SQL-команду удаления всех строк таблицы, связанной с текущим store.
В случае localStorage происходит перебор всех ключей, относящихся к текущему namespace, и их последовательное удаление.
Метод всегда асинхронный, даже если драйвер потенциально поддерживает синхронное удаление. Это сделано для единообразия API:
console.log('до очистки');
localforage.clear().then(() => {
console.log('после очистки');
});
console.log('между вызовами');
Вывод:
до очистки
между вызовами
после очистки
Очистка применяется только к текущему экземпляру:
const userStore = localforage.createInstance({
name: 'app',
storeName: 'users'
});
const cacheStore = localforage.createInstance({
name: 'app',
storeName: 'cache'
});
await userStore.clear();
// cacheStore останется без изменений
Метод не выполняет выборочную очистку и не поддерживает фильтры. Все ключи удаляются без возможности восстановления через API localForage.
Наиболее частые причины отказа:
Пример обработки:
localforage.clear()
.catch((err) => {
if (err.code === 18) {
console.warn('Доступ к хранилищу ограничен');
} else {
console.error('Неожиданная ошибка:', err);
}
});
Очистка хранилища в localForage обычно выполняется быстрее, чем удаление каждого ключа по отдельности:
При больших объёмах данных 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();
Применяется при миграции схемы хранения, когда старые ключи несовместимы с новой версией приложения.
Метод clear представляет собой операцию полного сброса
логического пространства хранения в рамках localForage, обеспечивая
единообразное поведение поверх различных браузерных механизмов хранения
данных и упрощая управление жизненным циклом локальных данных.