Метод clear() предназначен для полного удаления всех
записей из текущего хранилища, управляемого экземпляром
localForage. Это операция уровня «очистить всё пространство
ключ–значение», которая затрагивает только выбранный драйвер и namespace
(если он задан через config), не влияя на другие экземпляры
и их области хранения.
clear()Метод реализован в нескольких совместимых формах, отражающих эволюцию API и поддержку различных моделей асинхронности:
clear(): Promise<void>
Promise,
который завершается без значения (void)Promise в случае
сбоя удаления данныхclear(callback: (err: Error | null) => void): void
callback вызывается после завершения операцииerr содержит объект ошибки или null при
успешном выполненииclear(): Promise<void>;
clear(callback: (err: Error | null) => void): void;
Метод clear() выполняет полную очистку всех ключей в
рамках:
localForagestoreName (если используется
конфигурация)clear() не является глобальной операцией браузера. Он
работает строго в рамках:
storeName (namespace таблицы/объекта)Пример изоляции:
const storeA = localforage.createInstance({ name: 'A' });
const storeB = localforage.createInstance({ name: 'B' });
storeA.clear(); // очищает только A
clear() всегда асинхронен вне зависимости от
драйвера:
readwriteobjectStore.clear()выполняет SQL-команду:
DELETE FROM storeперебирает ключи и удаляет их по одному:
localStorage.removeItem(key)При использовании Promise:
await store.clear();
undefined не возвращаетсяgetItem по старым ключам вернут
nullМетод может завершиться ошибкой в следующих случаях:
Пример обработки:
store.clear().catch((err) => {
console.error('Ошибка очистки:', err);
});
Если параллельно выполняются операции:
setItemremoveItemclearвозможны следующие сценарии:
clear() создаёт транзакцию, которая:
localForage эмулирует
асинхронностьПосле clear():
await store.clear();
await store.length(); // 0
Также:
await store.keys(); // []
await store.iterate(() => {}) // не выполнится
removeItem| Операция | Поведение |
|---|---|
removeItem |
удаляет один ключ |
clear |
удаляет все ключи |
clear() эквивалентен множественным
removeItem, но выполняется более эффективно за счёт
нативных возможностей драйвера (особенно IndexedDB).
objectStore.clear()Внутренняя логика:
Абстракция обеспечивает единое поведение:
store.clear()
→ driver.clear()
→ Promise resolution
await localforage.clear();
const cache = localforage.createInstance({
name: 'cache'
});
await cache.clear();
await sessionStore.clear();
Если хранилище уже пустое:
await store.clear();
Метод учитывает:
namestoreNamedriverПример:
localforage.config({
name: 'app',
storeName: 'user_data'
});
clear() удалит только данные из user_data,
не затрагивая другие store внутри app.
При смене драйвера:
localforage.setDriver([
localforage.INDEXEDDB,
localforage.LOCALSTORAGE
]);
clear() работает только с активным драйвером, не очищая
потенциальные данные в fallback-слое до его активации.
После вызова:
await store.clear();
гарантируется:
localForage